zip64拡張を使用しない場合、Zipファイルのサイズは2GBを超えることはできません。したがって、その制限を超えるファイルに書き込もうとすると機能しません。私は、このような文章を書こうとすると、例外が発生すると思っていましたが、私はそれを引き起こすことができませんでした。このような状況で例外が発生しない場合、どのように書き込みが成功したかどうかを判断するにはどうすればよいでしょうか?ファイルが一杯なので、pythonのZipFile.writestr()が失敗したかどうかを確認するには?
3
A
答えて
0
私はzipアーカイブに大量の文字列を作成しようと例外持っている:スクリプトを使用して
$ python write-big-zip.py
Traceback (most recent call last):
File "write-big-zip.py", line 7, in <module>
myzip.writestr('arcname%d'% i, b'a'*2**30)
File "/usr/lib/python2.7/zipfile.py", line 1125, in writestr
self._writecheck(zinfo)
File "/usr/lib/python2.7/zipfile.py", line 1020, in _writecheck
raise LargeZipFile("Zipfile size would require ZIP64 extensions")
zipfile.LargeZipFile: Zipfile size would require ZIP64 extensions
を:ファイルの内容を取得し、それを保存する方法についてどのように
#!/usr/bin/env python
"""Write big strings to zip file until error."""
from zipfile import ZipFile
with ZipFile('big.zip', 'w') as myzip:
for i in range(4):
myzip.writestr('arcname%d'% i, b'a'*2**30)
+0
なぜ私は例外をキャッチしていないのか分かりませんが、あなたが期待しているように、明らかに1つが発生しています。確認していただいてありがとうございます! –
0
import os
size = os.path.getsize("file") #Get the size of the file.
size = size/1073741824 #Converting bytes to GB.
if size < 2: # < is probably safer than <=
#do the zipping
else:
print "The file is too large!"
これは当然理想的ではありませんが、より良いものが見つかるまでは一時的な解決策として役立つかもしれません。 もう一度、私はこれがzipを使用する非常に良い方法だとは思わない。しかし、適切な例外が存在しなければ、それは一時的な解決策として役立つかもしれない。
+0
まだ開かれているので、これをzipファイルで使用できるかどうかはわかりません。 –
関連する問題
- 1. WiFi認証が失敗したかどうかを確認する方法
- 2. MonkeyrunnerのwaitForConnection()が失敗したかどうかを確認する方法
- 3. Laravel 4でクエリが失敗するかどうかを確認するには?
- 4. XCTestCaseテストが失敗したかどうかを確認する方法
- 5. VCBUILDが失敗したか成功したかどうかをバッチスクリプトで確認するには
- 6. JENA - SPARQL更新クエリが失敗するかどうかを確認します
- 7. 電子メールの送信がCakePHPで成功/失敗したかどうかを確認しますか?
- 8. ファイルがPythonに存在するかどうかを確認するには?
- 9. iOS:ユーザーがロック解除コードの入力に失敗したかどうかを確認する
- 10. Pythonはgzippedファイルがxmlかcsvかどうかを確認します
- 11. アプリケーションがcodesignの確認に失敗しました
- 12. ディレクトリが作成されたかどうかを確認すると失敗しますか?
- 13. .close()が失敗したときに、Python 3でファイル記述子はどうなりますか?
- 14. トリガーが失敗した場合はどうなりますか?
- 15. Android:ファイルがイメージかどうかを確認するには?
- 16. curl_multi_execでどのURLが失敗したかを知るには?
- 17. Python pandasは、dataframeが空でないかどうかを確認します。
- 18. どのファイルがリポジトリからファイルを削除したかをどのように確認できますか?
- 19. プログラムが失敗した場合、Pythonは一時ファイルを削除しません。
- 20. ファイルがエラーなく存在するかどうかを確認するには?
- 21. ファイルがcvsのバイナリであるかどうかを確認するには
- 22. ファイルの内容が空であるかどうかを確認するには?
- 23. gccが失敗したか、警告を返したか、または成功したかどうかを確認する方法? (bashで)
- 24. 一部のdllファイルでACE_DLL :: openが失敗しました
- 25. zipファイルが壊れているかどうかを確認するPythonスクリプト
- 26. ファイルが新しいファイルであるかどうかを確認します。
- 27. スレッドが中断したかどうかを確認するためにスリープするのはどうですか?
- 28. どのAjaxリクエストが失敗したかを知るには?
- 29. adbが失敗して[INSTALL_PARSE_FAILED_NO_CERTIFICATES]に失敗するのはなぜですか?
- 30. CSRFの確認に失敗しましたが、Facebook Appのみで
文字列の長さ(1つの文字は1バイト)を確認し、続行するかどうかを選択します。編集:今私はそれについて考える、その方法は非常に効率的ではないかもしれません。 – Griffin
使用しているPythonのバージョンは? Python 2.7.2のドキュメントには、ZIPファイルにZIP64機能が必要であるが、そのファイルにはZIPファイルがある場合に発生する[zipfile.LargeZipFile](http://docs.python.org/library/zipfile.html#zipfile.LargeZipFile)例外があります。有効になっていません。 –
trueの場合、[バグとして報告する]必要があります(http://bugs.python.org/)。エラーは黙ってはいけません。 (編集:あなたが最新のバージョンを使用していると仮定します。) –