rank | vote | view | answer | url |
---|---|---|---|---|
8 | 4324 | 2684453 | 25 | url |
有什么好的方法吗?这个是我想的:
filename = "/my/directory/filename.txt"
dir = os.path.dirname(filename)
try:
os.stat(dir)
except:
os.mkdir(dir)
f = file(filename)
我忘记了os.path.exists
(多谢张三,李四,王五的提醒).下面是更改的:
def ensure_dir(f):
d = os.path.dirname(f)
if not os.path.exists(d):
os.makedirs(d)
有什么"打开"的标记可以自动的运行?
我看了俩答案都很好,但是都有一点缺陷,所以给出我的:
先试os.path.exists
,然后通过os.makedirs
来创建.
if not os.path.exists(directory):
os.makedirs(directory)
标注一下-如果一个文件在调用os.path.exists
和os.makedirs
之间被创建了,将会出现一个OSError
.遗憾的是捕获OSError
异常继续进行并不是万无一失的,它将会忽略像磁盘空间不足,没有足够权限等一些其他造成文件创建失败的因素.
一个做法是捕获OSError
异常并检查返回的错误代码(前提是知道错误代码对应的是什么).然而,还有另一种可能,第二次的os.path.exists
.假如恰好在第一次检查的时候创建了文件夹,然后在第二次检查的时候删掉--我们被耍了~~
根据不同的应用,并行操作的危险或多或少的比其他因素危险.开发者必须在选择开发环境的时候更多地了解特定的应用程序.