【发布时间】:2015-05-13 19:50:04
【问题描述】:
检查文件要写入的目录是否存在,如果不存在,使用 Python 创建目录的最优雅方法是什么?这是我尝试过的:
import os
file_path = "/my/directory/filename.txt"
directory = os.path.dirname(file_path)
try:
os.stat(directory)
except:
os.mkdir(directory)
f = file(filename)
不知何故,我错过了os.path.exists(感谢 kanja、Blair 和 Douglas)。这就是我现在拥有的:
def ensure_dir(file_path):
directory = os.path.dirname(file_path)
if not os.path.exists(directory):
os.makedirs(directory)
是否有open() 的标志,可以自动执行此操作?
【问题讨论】:
-
通常您可能需要考虑文件名中没有目录的情况。在我的机器上 dirname('foo.txt') 给出 '',它不存在并导致 makedirs() 失败。
-
如果路径存在,不仅要检查它是否是目录而不是常规文件或其他对象(许多答案检查这个),还需要检查它是否可写(我做过没有找到检查这个的答案)
-
如果你来这里创建文件路径字符串
p的父目录,这里是我的代码sn-p:os.makedirs(p[:p.rindex(os.path.sep)], exist_ok=True)
标签: python exception path directory operating-system