[解決済み] python zipfile モジュールがファイルを圧縮していないようです。
2023-05-04 11:39:58
質問
ちょっとしたヘルパー関数を作りました。
import zipfile
def main(archive_list=[],zfilename='default.zip'):
print zfilename
zout = zipfile.ZipFile(zfilename, "w")
for fname in archive_list:
print "writing: ", fname
zout.write(fname)
zout.close()
if __name__ == '__main__':
main()
問題は、すべてのファイルが圧縮されていないことです! ファイルは同じサイズで、事実上、拡張子が ".zip" に変更されているだけです (この場合は ".xls" から)。
私は、winXP sp2 で python 2.5 を実行しています。
どのように解決するのですか?
これは
ZipFile
は圧縮方法を指定する必要があるからです。指定しない場合は、圧縮方式を
zipfile.ZIP_STORED
と指定すると、圧縮せずにファイルだけを保存します。圧縮方式を指定する必要があるのは
zipfile.ZIP_DEFLATED
. を指定する必要があります。
zlib
モジュールがインストールされている必要があります (これは
は通常
がデフォルトでインストールされています)。
import zipfile
def main(archive_list=[],zfilename='default.zip'):
print zfilename
zout = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED) # <--- this is the change you need to make
for fname in archive_list:
print "writing: ", fname
zout.write(fname)
zout.close()
if __name__ == '__main__':
main()
更新情報 のドキュメントによると (python 3.7) によると、デフォルトの ZIP_STORED を上書きするために 'compression' 引数の値を指定する必要があります。利用可能なオプションは ZIP_DEFLATED、ZIP_BZIP2、ZIP_LZMA で、対応する zlib、bz2、lzma ライブラリが利用可能である必要があります。
関連
-
[解決済み] Pythonで "with open "を使って複数のファイルを開くにはどうしたらいいですか?
-
[解決済み] Pythonが解釈される場合、.pycファイルとは何ですか?
-
[解決済み] 他のPythonファイルをインポートするには?
-
[解決済み] Pythonモジュールをアンロード(再ロード)するにはどうしたらいいですか?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み] Pythonでファイルを解凍する
-
[解決済み] Pythonです。辞書が空かどうかのチェックはうまくいかないようです。
-
[解決済み】Pythonでディレクトリ内の拡張子.txtのファイルをすべて検索する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法