Добавление файла в существующий zip-файл

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

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

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

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

One Solution collect form web for “Добавление файла в существующий zip-файл”

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

 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)) он будет искать файл в текущем каталоге, где он (как говорит ошибка) не существует.

  • Как распаковать файл с помощью Python 2.4?
  • ZipFile.testzip () возвращает разные результаты на Python 2 и Python 3
  • Модуль zipfile python, похоже, не сжимает мои файлы
  • Python - как конвертировать Unicode имя файла в CP437?
  • Найти и заменить текст в файле .docx - Python
  • Python распакует AES-128 зашифрованный файл
  • Создайте zip-файл непосредственно из массива numpy без файла-посредника
  • загрузить файл pickle из zipfile
  • Python - лучший язык программирования в мире.