检查一个文件夹是否存在,如果不存在就创建它

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.existsos.makedirs之间被创建了,将会出现一个OSError.遗憾的是捕获OSError异常继续进行并不是万无一失的,它将会忽略像磁盘空间不足,没有足够权限等一些其他造成文件创建失败的因素.

一个做法是捕获OSError异常并检查返回的错误代码(前提是知道错误代码对应的是什么).然而,还有另一种可能,第二次的os.path.exists.假如恰好在第一次检查的时候创建了文件夹,然后在第二次检查的时候删掉--我们被耍了~~

根据不同的应用,并行操作的危险或多或少的比其他因素危险.开发者必须在选择开发环境的时候更多地了解特定的应用程序.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值