2015-12-14 3 views
5

Я использую модуль zipfile python.
Имея почтовый файл, расположенный в пути:
/home/user/a/b/c/test.zip
И имея другой файл, созданный под /home/user/a/b/c/1.txt Я хочу, чтобы добавить этот файл в существующий почтовый индекс, я сделал:
zip = zipfile.ZipFile('/home/user/a/b/c/test.zip','a') zip.write('/home/user/a/b/c/1.txt') zip.close()Добавление файла в существующий zip-файл

И получил все вложенные папки появляется в пути при распаковке файла, как я могу просто ввести zip-файл без подкаталогов пути?

Я также попробовал: zip.write(os.path.basename('/home/user/a/b/c/1.txt')) И получил ошибку, если файл не существует, хотя он и есть.

Примечание: Я не использую жестко заданные значения в своих путях в этом примере, чтобы упростить его.

ответ

7

Вы получили очень близко:

zip.write(path_to_file, os.path.basename(path_to_file)) 

должны сделать трюк для вас.

Пояснение: Функция zip.write принимает второй аргумент (имя дуги), который является именем файла, который будет храниться в zip-архиве, подробнее см. Документацию для zipfile.

os.path.basename() удаляет каталоги в пути для вас, так что файл будет храниться в архиве только под его именем.

Обратите внимание, что если вы только zip.write(os.path.basename(path_to_file)), он будет искать файл в текущем каталоге, где он (как говорит ошибка) не существует.

Смежные вопросы