Używanie do tworzenia archiwum ZIP w Pythonie 3.5 nie działa zgodnie z oczekiwaniami w systemie Windows.Python's shutil.make_archive() tworzy katalog dot w systemie Windows
W systemie Linux działa poprawnie, wszystkie pliki i foldery znajdujące się wewnątrz directory
są zarchiwizowane i widoczne w pliku zip. Jednak w systemie Windows tworzony jest dodatkowy folder - folder z kropkami .
. Zobacz zrzut ekranu:
folderze sama jest pusta, ale chcę, aby pozbyć się go całkowicie (kolejny proces jest bardzo ścisły o strukturze). Obejście problemu nie będzie wymagało użycia make_archive()
i ręcznego utworzenia ZipFile
, ale uważam, że funkcja powinna działać w pierwszej kolejności.
Czy to błąd, czy też coś mi brakuje?
Edit: kropka plik jest obecny w 7zip oraz Total Commandera. Jest to najkrótsza fragment pracy dla mnie (Python 3.5.1, Windows 10):
import shutil
import os
os.chdir('C:/Users/melka/Downloads')
shutil.make_archive('testing', 'zip', 'zip_test')
ta tworzy nowy ZIP z treścią C:\Users\melka\Downloads\zip_test
, który kończy się:
jednak ręcznie tworzenia zip za pomocą tego kodu nie tworzy plik dOT:
import os
import zipfile
def make_zip(zip_name, path):
zip_handle = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
os.chdir(path)
for root, dirs, files in os.walk('.'):
for file in files:
zip_handle.write(os.path.join(root, file))
os.chdir('C:/Users/melka/Downloads')
make_zip('anotherzip.zip', 'zip_test')
nie można odtworzyć (używając Pythona 2.7). Twoja linia poleceń nie jest poprawna btw. Jesteś pewien, że to nie problem twojego graficznego programu Unarchiver? Używam 7-zip i nie widzę żadnej kropki reż. –
To nie było poprawne, tylko z powodu ponownego wpisania go tutaj. Dostarczyłem próbki kodu, które nie działają dla mnie. Jestem prawie pewien, próbowałem otwarcia przy użyciu zarówno Total Commander, jak i 7Zip, a plik dot był pokazywany w obu (gdy został utworzony przez 'make_archive') - gdy został utworzony za pomocą funkcji niestandardowej, nie był obecny ani w unarchiver. –
Spróbuj przekazać rejestrator do argumentu 'logger' dla' shutil.make_archive'? Może dostarczyć więcej informacji. – joeb