Я пытаюсь сжать все файлы в папке (папка не имеет каких-либо поддиретов) с использованием модуля zipfile python, но, похоже, не может получить желаемый результат.Python - Сжать все файлы в каталоге с помощью zipfile-модуля
У меня есть folderA
, сидящий под F:\Projects\ProjectA\Folders\folderA and my script under F:\Projects\ProjectA\CodeA\zipcode.py
. Я хочу сжать все файлы в папке A, чтобы полученный zip-файл был назван как folderA.zip
под F:\Projects\ProjectA\Folders
и с оригинальными именами файлов.
Единственная проблема заключается в том, что при распаковке результата получается папка \ folderA, а не только 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-файл. –
@Riz_K: true для моего первого ответа, но мое редактирование добавлено 'name_in_archive = os.path.join (os.path.basename (filepath), afile)'. Это добавляет префикс 'folderA' ко всем вашим файлам. Важно то, что вы знаете, как управлять именами файлов в вашем архиве. –
Awesome ... спасибо за подробности! –