0

我正在尝试制作一个类的一部分,该类将允许我在每次创建实例时为输出文件创建一个新目录。但是,每当执行 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

任何帮助将不胜感激......刚刚开始编写类,我正在努力解决如何在函数之间处理变量并创建输出文件而不定义每个函数中的文件路径。

4

1 回答 1

1

我想你想这样写你的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),它会使您的代码更具可移植性。

于 2015-05-22T04:44:56.847 回答