一个非常基本的问题,我有一个可以动态创建目录的模块,但是,有时我想在dir中放置多个文件。如果发生这种情况,python会出现异常并说已经创建了dir,我该如何避免这种情况并检查dir是否已经创建?
保存模块如下所示:
def createdirs(realiz):
# Create all the necessary directories
path = "./doubDifferences_probandamp_realiz%d/"%realiz
os.mkdir(path,0755)
directory = os.path.split(path)[0]
return directory
在主程序中,我有这个:
for realiz in range(1,1000):
for i in range(dim):
for j in range(i+1,i+4):
...
dirspaths = mod_savefile.createdirs(realiz)
答案 0 :(得分:7)
你可以尝试一下,除了:
try:
os.mkdir(path,0755)
except OSError:
pass
“更容易请求宽恕而不是许可!”
此方法在执行mkdir
之前测试目录更安全。实际上,很可能在ispath
和mkdir
隐含的两个os调用之间,该目录可能已被另一个线程创建或销毁。
答案 1 :(得分:3)
这应该涵盖你。在尝试创建目录之前,只需测试它是否为目录。
if not os.path.isdir(path)
os.mkdir(path,0755)
答案 2 :(得分:2)
你有几种方法。使用os.path.isdir
功能:
import os.path
def createdirs(realiz):
# Create all the necessary directories
path = "./doubDifferences_probandamp_realiz%d/"%realiz
if not os.path.isdir(path): # if not exists
os.mkdir(path,0755) # create it
directory = os.path.split(path)[0]
return directory
或处理异常。