Szukałem w sieci wysoko i nisko, ale wciąż nie mogłem znaleźć rozwiązania powyższego problemu. Czy ktoś tam wie, dlaczego i jeśli tak, jak można to zrobić?
psw="dg"
ZipFile.extractall("data.zip", None, psw)
Błąd, który otrzymałem:
TypeError: unbound method extractall() must be called
with ZipFile instance as first argument (got str instance instead)
Odpowiedzi:
13 dla odpowiedzi nr 1Ponieważ źle tego używasz. :) Z docs:
Plik zip.Wypakuj wszystko([ścieżka [, członkowie [, pwd]]]))
Wyodrębnij wszystkich członków z archiwum do bieżącego katalogu roboczego. ścieżka określa inny katalog do wyodrębnienia. członkowie są opcjonalne i muszą być podzbiorem listy zwróconej przez listę nazw (). pwd to hasło używane do szyfrowania plików.
Powinieneś więc wywołać tę funkcję dla obiektu ZipFile, a nie jako metodę statyczną. I nie powinieneś podawać nazwy archiwum jako pierwszego argumentu. :)
w ten sposób „będzie działać:
from zipfile import ZipFile
with ZipFile("data.zip") as zf:
zf.extractall(pwd="dg")