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 に答える