2018 python 判断文件夹不存在时创建文件夹

if not os.path.exists(directory):
    os.makedirs(directory)

今天敲代码的时候,发现一个问题,找不到文件夹,我的代码的文件夹是写死的,先放一段代码

file_path = os.path.dirname(os.getcwd()) + '/TestPython/Screenshots/'
rq = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
screen_name = file_path + rq + '.png'
try:
    self.driver.get_screenshot_as_file(screen_name)
    logger.info("开始截图并保存")

except Exception as e:
    logger.error("出现异常", format(e))

这样很不方便,需要自己手动在根目录下创建文件夹,如果忘了就会报错,这时候就需要通过代码自动创建,我们需要给一个判断,有文件夹时候就执行下面的代码,没有的就自行创建。

file_path = os.path.dirname(os.getcwd()) + '/TestPython/Screenshots/'
if not os.path.exists(file_path):
    os.mkdir(file_path)
else:
    rq = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    screen_name = file_path + rq + '.png'
try:
    self.driver.get_screenshot_as_file(screen_name)
    logger.info("开始截图并保存")

except Exception as e:
    logger.error("出现异常", format(e))        

这是修改以后的,可以明显看出来。

这里会有一个问题,如果一个文件在调用os.path.existsos.makedirs之间被创建了,将会出现一个OSError.遗憾的是捕获OSError异常继续进行并不是万无一失的,它将会忽略像磁盘空间不足,没有足够权限等一些其他造成文件创建失败的因素.

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

猜你喜欢

转载自blog.csdn.net/ywj_486/article/details/81667614