python zip & 压缩多个文件

Shi*_*iva 5 python zip

我真的很抱歉成为那个新手,但我无法弄清楚为什么这对我自己不起作用。已经有类似的问题,但它们根本没有帮助。我尝试在目录中压缩和压缩不同的文件。

这是我的代码:

import zipfile
import zlib

value_map =
['/home/shiva/Desktop/test2', 'None', False, False, True, False
['_MG_5290.JPG', '_MG_5294.JPG', '_MG_5293.JPG', '_MG_5295.JPG',
'_MG_5291.JPG', 'IMG_5434.JPG', '_MG_5292.JPG'], ['_MG_5298.CR2',
'_MG_5290.CR2', '_MG_5297.CR2', '_MG_5294.CR2', '_MG_5296.CR2',
'_MG_5291.CR2', '_MG_5292.CR2', '_MG_5299.CR2', '_MG_5293.CR2',
'_MG_5295.CR2']]

def compress(value_map):
    print "value_map:"
    print value_map

    try:
        compression = zipfile.ZIP_DEFLATED
        zf = zipfile.ZipFile(value_map[0] + "/RAWs.zip", mode="w")
        for x in value_map[7]:
            print "test1"  # prints
            zf.write(value_map[0] + x, compress_type=compression)  # nope
            print "test2"  # doesn't print
        zf.close()
        print ("[*] " + len(value_map[7]) + " have been moved to:")
        print ("[*] " + value_map[0] + "/RAWs.zip")
    except:
        print "[-] Couldn't compress\n[-] Exiting"
        sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

只是为什么???

clf*_*ter 11

这是一个如何使用 zipfile 包进行压缩的示例。你的代码看起来几乎没问题。您的列表中有错字!并且您不应该使用 try & 除非没有指定要捕获的错误!FileNotFoundError如果您要添加到 zip 的文件不存在,我将排除这种情况。

示例(更新):

import zlib
import zipfile

def compress(file_names):
    print("File Paths:")
    print(file_names)

    path = "C:/data/"

    # Select the compression mode ZIP_DEFLATED for compression
    # or zipfile.ZIP_STORED to just store the file
    compression = zipfile.ZIP_DEFLATED

    # create the zip file first parameter path/name, second mode
    zf = zipfile.ZipFile("RAWs.zip", mode="w")
    try:
        for file_name in file_names:
            # Add file to the zip file
            # first parameter file to zip, second filename in zip
            zf.write(path + file_name, file_name, compress_type=compression)

    except FileNotFoundError:
        print("An error occurred")
    finally:
        # Don't forget to close the file!
        zf.close()


file_names= ["test_file.txt", "test_file2.txt"]
compress(file_names)
Run Code Online (Sandbox Code Playgroud)