2016-04-14 6 views
0

ファイルを開いて内容を読み、ハッシュと比較し、必要に応じてファイルを再度上書きしようとしています。基本的なものでなければならないが、どういうわけか私はそれを働かせることができない。私が今持っている:Python read()が動作しない

with open(name, 'wb+') as des: 
    current_content = des.read() 

私は右のファイルを探しています(後にデータが書き込まれますし、それが動作します)何とかcurrent_contentのように終わることを、ファイルが空でない100%確信しています空の文字列。

with open(name, 'wb+') as des: 
    des.write('Test') 
    des.seek(0) 
    current_content = des.read() 

私が上記を試してみると、current_contentは 'Test'を返します。誰でもこの現象を引き起こす可能性のあるアイデアですか?

+1

w +はopen()docsに従ってファイルを切り捨てます。 – srowland

答えて

1

ファイル読み取りオプションwb+ab+に変更し、今すぐテストしてください。問題は、ab+は、ドキュメントに従ってバイナリファイルでデータの読み取りと追加(EOFでの)をサポートすることです。 wb+を使用している場合、既存のファイルを上書きすることがあります。

+0

私はab +とwb +の間の唯一の違いは、ポインタの位置、開始またはEOFだと思ったので、私は今混乱しています。 ab +に切り替えることはできませんでしたが、ab +に切り替えてシーク(0)を入れてから固定されたものを読み込みました。 私は右のwbファイルが開いたときすぐに上書きすることを理解すれば? – Matthieu

+0

同じアイデアを探しています。開くときに 'wb +'がファイルを上書きします。しかし、上書きはドキュメントに暗示されています。 'read'関数は、正しく覚えていれば、最後からファイルを読み始めます。そのため、シークはファイルの先頭に移動します。 – Mitty

関連する問題