복붙노트

[PYTHON] python zipfile 모듈이 내 파일을 압축하지 않는 것 같습니다.

PYTHON

python zipfile 모듈이 내 파일을 압축하지 않는 것 같습니다.

나는 조금 도우미 기능을했다 :

import zipfile

def main(archive_list=[],zfilename='default.zip'):
    print zfilename
    zout = zipfile.ZipFile(zfilename, "w")
    for fname in archive_list:
        print "writing: ", fname
        zout.write(fname)
    zout.close()

if __name__ == '__main__':
    main()  

문제는 모든 파일이 압축되지 않는다는 것입니다! 파일의 크기가 동일하고 실제로 확장자가 ".zip"(이 경우 ".xls")로 변경됩니다.

winXP sp2에서 Python 2.5를 실행 중입니다.

해결법

  1. ==============================

    1.이는 ZipFile에서 압축 방법을 지정해야하기 때문입니다. 지정하지 않으면 압축 방법을 압축하지 않고 저장하는 zipfile.ZIP_STORED로 가정합니다. 메소드를 zipfile.ZIP_DEFLATED로 지정해야합니다. 이를 위해 zlib 모듈을 설치해야합니다 (보통 기본적으로 설치됩니다).

    이는 ZipFile에서 압축 방법을 지정해야하기 때문입니다. 지정하지 않으면 압축 방법을 압축하지 않고 저장하는 zipfile.ZIP_STORED로 가정합니다. 메소드를 zipfile.ZIP_DEFLATED로 지정해야합니다. 이를 위해 zlib 모듈을 설치해야합니다 (보통 기본적으로 설치됩니다).

    import zipfile
    
    def main(archive_list=[],zfilename='default.zip'):
        print zfilename
        zout = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED) # <--- this is the change you need to make
        for fname in archive_list:
            print "writing: ", fname
            zout.write(fname)
        zout.close()
    
    if __name__ == '__main__':
        main()  
    
  2. ==============================

    2.'zip 파일'형식을 압축하는 아주 쉬운 방법이 있습니다.

    'zip 파일'형식을 압축하는 아주 쉬운 방법이 있습니다.

    shutil.make_archive 라이브러리에서 사용하십시오.

    예 :

    import shutil
    
    shutil.make_archive(file_name, 'zip', file location after compression)
    

    더 자세한 문서는 https://docs.python.org/2/library/shutil.html#shutil.make_archive에서 볼 수 있습니다.

  3. from https://stackoverflow.com/questions/4166447/python-zipfile-module-doesnt-seem-to-be-compressing-my-files by cc-by-sa and MIT license