/ / Dlaczego ten kod nie tworzy kopii zapasowych / katalogów ZIP? - python, plik zip

Dlaczego ten kod nie zawiera kopii zapasowych / katalogów ZIP? - python, zipfile

Tworzę program do plików ZIP. W tym scenariuszu próbuję ZIP katalogu z podkatalogiem wewnątrz niego. Używam następującej funkcji, jeśli program musi ZIP z katalogu, ale nie robi podkatalogów ZIP, po prostu pobiera pliki z podkatalogu i umieszcza je ze wszystkimi innymi.

zipper = zipfile.ZipFile(systemDate + ".zip", "w")

def zipdir(path, ziph):
logging.info("ZIP function has been called.")
for root, dirs, files in os.walk(path):
for file in files:
fileNom = os.path.join(root, file)
print("file nom: " + fileNom)
zipper.write(fileNom, basename(fileNom))

Dzięki.

Odpowiedzi:

4 dla odpowiedzi № 1

Drugi argument do ZipFile.write to nazwa archiwum, czyli nazwa pliku w archiwum. Ponieważ plik ZIP nie zawiera żadnych informacji o folderach, który to gdzie to musi iść. Aby umieścić plik w podkatalogu, musisz dostosować arcname dołączyć nazwę katalogu.

Możesz użyć os.path.relpath obliczyć ścieżkę względem twojego path który wydaje się być głównym plikiem ZIP:

zipper.write(fileNom, os.path.relpath(fileNom, path))