私はいくつかの引数をとり、ファイルに出力する関数を用意しています。私のコードは次の通りです:Python:Errno 38 - オープンファイルに実装されていない関数
def write_new(self, filename, file_size, md5, description, data, timestamp):
if (isfile(self.Filename)):
print ('IS FILE')
return False
ip, port = data
data = '\n'.join(str(s) for s in [ filename, file_size, FileStream.CHUNK_SIZE_DEFAULT,
md5, description, FileStream.build_peer(ip, port, True, int(file_size + 0.5/FileStream.CHUNK_SIZE_DEFAULT), int(timestamp)) ])
with open(self.Filename, 'w') as F:
F.write(data)
return True
def build_peer(ip, port, full_or_empty, size, timestamp):
return ':'.join(str(s) for s in [ip, port, '0,' + str(size), '1' if full_or_empty else '0', timestamp])
私はこれを一度正常に呼び出し、適切な値を持つファイルを作成しました。私はその後、ファイルを削除し、再びそれを作成しようとし、Errno 38、機能が実装されていないし、関数として私のファイルを記載した。私は何が起こっているか分かりませんし、いくつかの助けに感謝します。
ありがとうございます!
「Filename」などの属性名は、型でない限り大文字にしないでください。混乱します。そして論理的な塊であなたのラインを壊そうとすると、そのまま読むのはとても難しいです。文字列の書式設定には 'format()'を使い、 'join 'を使って書式を設定するだけのために異種リストを作成するのは面倒で読みにくいです。 – spectras
あなたの実際の問題のために、使用しようとしているファイル名は何ですか?どのシステムでそれを使用していますか?完全なスタックトレースは何ですか? – spectras
あなたは 'if(isfile(self.Filename)):'を持っていますが、 'if(isfile(filename))' 'が本当に必要なように見えます。 'filename'です。 'open(self.Filename、 'w')でF:'と同じことをやっていますが、単に 'filename'を使いたいと思っています。 – coralvanda