python zipfileモジュールを使用してフォルダ内のすべてのファイルを圧縮しようとしています(フォルダにはサブディレクトリがありません)。Python - zipfileモジュールを使用してディレクトリ内のすべてのファイルを圧縮
folderA
は、F:\Projects\ProjectA\Folders\folderA and my script under F:\Projects\ProjectA\CodeA\zipcode.py
の下に座っています。結果のzipファイルのファイル名がfolderA.zip
、F:\Projects\ProjectA\Folders
、元のファイル名になるように、folderAのすべてのファイルを圧縮します。
唯一の問題は、結果を解凍するとfolderAの代わりにFolders \ folderAが生成されることです。それは、scriptAのfolderAの相対パスと関係があるが、私は望む結果を得ることができない。あなたのループ内
#zipcode.py
import os
import zipfile
filepath = "F:/Projects/ProjectA/Folders/folderA"
archive = zipfile.ZipFile(os.path.abspath(filepath) + '.zip', 'w')
for root, dirs, files in os.walk(filepath):
for afile in files:
archive.write(os.path.relpath(os.path.join(root, afile)))
archive.close()
を書くことができ、私は実際にすべてのファイルが常駐しているとfolderAという名前のフォルダが含まれているために、出力zipファイルが欲しいですその中に。上記のファイルはzipファイルに直接書き込まれます。 –
@Riz_K:私の最初の答えは真ですが、私の編集は 'name_in_archive = os.path.join(os.path.basename(filepath)、afile)'を追加しました。これによりすべてのファイルに 'folderA'接頭辞が追加されます。重要な点は、アーカイブ内のファイルの名前を制御する方法を知っていることです。 –
恐ろしい...詳細をありがとう! –