在Python中重命名ZipFile

时间:2015-06-20 17:44:06

标签: python zipfile

要重命名我正在下载的ZipFile中的一个文件,我会执行以下操作:

for item in zipfile.infolist():
    old_name =  item.filename
    match = re.search(r'(.*)(.mdb)', item.filename)
    item.filename = "%s_friend%s" % (match.group(1),, match.group(2)) # I should probably be using replace here
    zipfile.extract(old_name, save_dir)

但是,当我想提取该文件并将其保存到特定目录时,我需要引用“old_name”并且不能引用新文件。是否有一种“更清洁”的方式来提取重命名的文件?或者首先提取然后重命名文件更加pythonic?

this SO question的OP一样,我在引用重命名的文件时遇到了同样的错误。

已更新:这未正确更新第一个文件。虽然它似乎正确地重命名文件,但它会输出最初命名的文件。

for item in zipfile.infolist():
    old_name =  item.filename
    match = re.search(r'(.*)(.mdb)', item.filename)
    print match.group(1), match.group(2)
    item.filename = "%s_%s%s" % (match.group(1), year, match.group(2))
    print item.filename
zipfile.close()
with ZipFile(curr_zip, 'r') as zpf:
    for item in zpf.infolist():
        zpf.extract(item.filename, save_dir)

1 个答案:

答案 0 :(得分:1)

经过测试发现无法直接重命名zip文件夹中的文件。您所能做的就是创建一个全新的zip文件,并使用不同的名称将文件添加回新的zip文件。

示例代码 -

|FirstName |Init.     |LastName            |
|Dick      |          |Smith               |
|John      |D         |Doe                 |
|John      |F.        |Kennedy             |