Модуль zipfile проверяет это, а также может возвращать «Неверный пароль для файла», если пароль не совпадает.
Но он делает это для каждого файла отдельно.Поскольку каждый файл в ZIP-файле может иметь свой собственный пароль, который был паролем, который был указан при добавлении файла в архив.
Я думаю, что ваш zip-файл не был защищен паролем, так как zipfile принимает парольпри извлечении для файлов, которые не защищены паролем.Он не сообщает об ошибке, когда пароль не используется, поскольку файл не был защищен паролем.
Чтобы избежать извлечения ZIP-файла, который не защищен паролем, когда предоставляется пароль, необходимо проверить, являются ли файлы паролем.protected:
import zipfile
def all_files_are_password_protected(zf):
return all(zinfo.flag_bits & 0x1 for zinfo in zf.infolist())
zFile=zipfile.ZipFile("important.zip")
try:
if all_files_are_password_protected(zFile):
zFile.extractall(pwd="oranges")
except Exception as e:
import traceback
traceback.print_exc()
На основе:
zf = zipfile.ZipFile(archive_name)
for zinfo in zf.infolist():
is_encrypted = zinfo.flag_bits & 0x1
if is_encrypted:
print '%s is encrypted!' % zinfo.filename
С Как проверить, зашифрован ли zip-файл с помощью стандартного zip-файла стандартной библиотеки python?
Обратите внимание, что каждый файл имеет свой собственный пароль, поэтому некоторые файлы могут быть не извлечены, если зашифрованы с помощью другого пароля.