Почему в моем zip-файле отсутствуют значения CRC? - PullRequest
0 голосов
/ 08 мая 2018

Мой скрипт архивирует некоторые файлы с помощью zipfile, но в архиве, похоже, отсутствуют значения CRC.
Почему это происходит?
Вот мой код:

import os.path
import zipfile
from glob import glob
from sys import exit


def dozip():
    file_list = glob("C:/python27/scripts/*.py")

    zf = zipfile.ZipFile("myzip.zip", 'w')

    for f in [f.replace("/", os.sep) for f in file_list]:
        print f
        if os.path.exists(f):
            filepath, f = os.path.split(f)
            zf.write(os.path.join(filepath, f) if filepath.strip() else f, f,
                compress_type=zipfile.ZIP_DEFLATED)

def main():
    dozip()
    raw_input("Finished zipping the archive. Press enter to quit ")
    exit()

if __name__ == "__main__":
    main()

Вот скриншот winrar

Запуск win7 x64 и python 2.7.

1 Ответ

0 голосов
/ 08 мая 2018

Это потому, что zipfile вычисляет CRC только при закрытии архива, поэтому при взаимодействии с архив до того, как скрипт закроет архив, в нем будут отсутствовать CRC. Поэтому вам нужно вручную закрыть его перед вычислением CRC, иначе CRC будет нулевым.

Звоните zf.close() в конце dozip.

...