2012-02-24 15 views
0

私はファイルを圧縮するためにhttp://docs.python.org/library/zipfile.htmlを使用しています。それはうまく動作しますが、私のubuntu経由でファイルを展開するとき(Pythonではなく右クリックのファイルと 'Extract here')ファイルが切り捨てられます。私の元のファイルは〜167kb、ubuntu〜164kbで抽出されています(CSVファイルですので、ファイルの最後から数行は欠場します)。Zipfileライブラリ抽出の問題

提案がありますか?

編集:エルは、いくつかのcsvファイルをある

try: 
    fp2 = zipfile.ZipFile(el.replace('.csv', '.zip'), 'w', 
      zipfile.ZIP_DEFLATED) 
    fp2.testzip() 
    fp2.write(el) 
finally: 
    fp2.close() 

を次のように

私のコードが見えます。

Edit2: zipファイルに書き込み中に一部のデータが失われているようです。

+0

ファイルを閉じてもよろしいですか? (近くに電話をしないと、いくつかの重要なレコードは除外されていると警告されています) –

+0

モードの代わりに 'w'の代わりに 'wb'を試してみてください。 –

+0

私はLinuxのユーザーです。だから私は 'w'の代わりに 'wb'を置くと、私はRuntimeErrorを受け取ります。 – Drachenfels

答えて

0

ヒント:

は、(1)あなたはtestzipを呼び出しますが、戻り値を無視します。アーカイブが空の場合(この場合のように)、状況を混乱させる可能性があります。 testzipへの呼び出しを削除します。

(2)作成されたファイルの完全性を別の手段、例えば、 (a)linux_zipfile_executable -t your_created_archive.zip(b)短いPythonスクリプトtestzipを使用します。他の抽出手段を試してみてください。

(3)mode='wb'プッシャーは無視してください。これは、内蔵のopenで開かれたファイルにのみ関係します。 zipfileドキュメントで言うように、唯一の許容モードはr,waです。その他:RuntimeError: ZipFile() requires mode "r", "w", or "a"。 zipfileコードは、openを使用してアーカイブファイルを開くときに実際にbフラグを使用します。

(4)問題を見つけようとしているときに、正確なcsvファイルのペアを比較していることを確認してください。

(5)Web上の3つのファイル(入力、出力、および.zip)をどこかに投稿してください。

+0

真実は、zipfileでは問題ではなく、csvの問題であり、ライターだということです。私はcsv.writerに渡されたファイルポインタを閉じることなく、新しく生成されたCSVファイルに対して何らかの操作を行っていました。実際の圧縮を行う前に閉じて、私の問題を解決しました。 – Drachenfels

関連する問題