2016-10-20 6 views
0

私はいくつかの引数をとり、ファイルに出力する関数を用意しています。私のコードは次の通りです: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、機能が実装されていないし、関数として私のファイルを記載した。私は何が起こっているか分かりませんし、いくつかの助けに感謝します。

ありがとうございます!

+1

「Filename」などの属性名は、型でない限り大文字にしないでください。混乱します。そして論理的な塊であなたのラインを壊そうとすると、そのまま読むのはとても難しいです。文字列の書式設定には 'format()'を使い、 'join 'を使って書式を設定するだけのために異種リストを作成するのは面倒で読みにくいです。 – spectras

+0

あなたの実際の問題のために、使用しようとしているファイル名は何ですか?どのシステムでそれを使用していますか?完全なスタックトレースは何ですか? – spectras

+0

あなたは 'if(isfile(self.Filename)):'を持っていますが、 'if(isfile(filename))' 'が本当に必要なように見えます。 'filename'です。 'open(self.Filename、 'w')でF:'と同じことをやっていますが、単に 'filename'を使いたいと思っています。 – coralvanda

答えて

0

それはITのせいだった。そのネットワーク共有ドライブからファイルを削除する権限がありませんでした。私は、将来ITを信頼することに反対することを勧めます。

+0

あなたはそれを削除されたものとして見ていましたが、実際には削除されませんでしたか?さて、まあ、38(実装されていない)は、その動作のための奇妙なエラーコードです。あなたが問題を解決したのを見てうれしい。 – spectras

+0

@spectras私はそれをWindowsから削除しました。恐らくそれと関係がありました。ご迷惑をおかけして申し訳ございません。 – Woody1193

+0

心配することなく、うれしく固定しました。そして、質問を残して、それは同じ問題でつまずく他の人々に便利になるかもしれない:) – spectras

関連する問題