在 python 2.7 [Win7] 中使用 os.mkdirs 时出错
Error using os.mkdirs in python 2.7 [Win7]
我正在尝试制作 class 的一部分,这将允许我在每次创建实例时为输出文件创建一个新目录。但是,每当执行 mkdir_p 函数时,我都会收到此错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
jim = OPNprobe('oops','x','a')
File "H:/Bio_Files/Pyscripts/opsinomics/aa.pya.py", line 22, in __init__
self.mkdir_p(self.path+'\'+self.out_name)
Empty
如果目录尚未创建,我只会收到此错误。一旦它抛出错误并创建目录,它就会让我启动一个新实例而不会再次抛出错误。
这是我用来创建新目录的函数。我从用户提供的初始变量中传递路径变量。 'path' 变量目前只是 'oops',所以没什么特别的,应该只创建一个名为 oops 的目录。
def mkdir_p(self,path):
try:
os.makedirs(self.path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST:
pass
else: raise
任何帮助将不胜感激...刚开始编写 classes 并且我正在努力研究如何在函数之间处理变量并创建输出文件而不定义每个函数中的文件路径。
我想你想这样写你的 mkdir_p
方法:
def mkdir_p(self,path):
try:
os.makedirs(self.path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST:
pass
else: raise # pay attention here, this line must be indented the same as the 'if' line
你原来的代码中,else
是try
的一个分支,else
分支下的代码不管有没有异常都会执行
此外,你最好使用os.path.join(self.path, self.out_name)
而不是self.mkdir_p(self.path+'\'+self.out_name)
,这将使你的代码更具可移植性。
我正在尝试制作 class 的一部分,这将允许我在每次创建实例时为输出文件创建一个新目录。但是,每当执行 mkdir_p 函数时,我都会收到此错误:
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
jim = OPNprobe('oops','x','a')
File "H:/Bio_Files/Pyscripts/opsinomics/aa.pya.py", line 22, in __init__
self.mkdir_p(self.path+'\'+self.out_name)
Empty
如果目录尚未创建,我只会收到此错误。一旦它抛出错误并创建目录,它就会让我启动一个新实例而不会再次抛出错误。
这是我用来创建新目录的函数。我从用户提供的初始变量中传递路径变量。 'path' 变量目前只是 'oops',所以没什么特别的,应该只创建一个名为 oops 的目录。
def mkdir_p(self,path):
try:
os.makedirs(self.path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST:
pass
else: raise
任何帮助将不胜感激...刚开始编写 classes 并且我正在努力研究如何在函数之间处理变量并创建输出文件而不定义每个函数中的文件路径。
我想你想这样写你的 mkdir_p
方法:
def mkdir_p(self,path):
try:
os.makedirs(self.path)
except OSError as exc: # Python >2.5
if exc.errno == errno.EEXIST:
pass
else: raise # pay attention here, this line must be indented the same as the 'if' line
你原来的代码中,else
是try
的一个分支,else
分支下的代码不管有没有异常都会执行
此外,你最好使用os.path.join(self.path, self.out_name)
而不是self.mkdir_p(self.path+'\'+self.out_name)
,这将使你的代码更具可移植性。