Как мне заархивировать файлы в Python без всех каталогов, показанных в нем - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь заархивировать многократные файлы, но у меня возникла странная проблема, когда я открываю zip-файл, также отображаются все каталоги, ведущие к файлам home/site/Uploads/test/

Вот код Python, который я написал

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("D:/home/site/Uploads/test/"):
zf.write(dirname)
for filename in files:
    zf.write(os.path.join(dirname, filename))
zf.close()

С архивированными файлами все в порядке, но почему перечислены все остальные каталоги?

Я получил такой ZIP-файл -> home -> site -> Uploads--> test -> file.txt я хотел вот что -> file.txt

1 Ответ

1 голос
/ 21 октября 2019

Предположим, что следующая структура каталогов:

./uploads
└── foo
    └── bar
        ├── 1.txt
        └── baz
            └── 2.txt

Вам просто нужно правильно задать имя дуги:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("/tmp/uploads"):
    for filename in files:
        zf.write(os.path.join(dirname, filename), arcname=filename)
zf.close()

При распаковке zip-файл выглядит следующим образом:

unzip -l myzipfile.zip                                                                                                                    Archive:  myzipfile.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  10-21-2019 15:03   1.txt
        0  10-21-2019 15:03   2.txt
---------                     -------
        0                     2 files
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...