使用zipfile python更改文件名

时间:2013-06-13 20:42:38

标签: python

我想将我正在提取的文件的名称更改为新的:

i = 0
for file in zip_file.namelist():
     path = 'C:\test\object'
     zip_file.extract(file, path)  #Change name here of file
     i+=1

是否可以将file的名称更改为str(i)+'_'+'file'之类的内容?我知道我可以使用shutil.move(),但如果可能的话,我想保持自己的风格。

1 个答案:

答案 0 :(得分:3)

您可以通过zip_file对象的open方法使用文件对象直接在正确的位置提取文件。

zip_file = zipfile.ZipFile('toto.zip')
target_path = 'C:\test\object'

for i, filename in enumerate(zip_file.namelist()):
    target = os.path.join(target_path, "%05d_%s" % (i, filename))
    file_obj = open(target, 'wb')
    try:
        shutil.copyfileobj(zip_file.open(filename, 'r'), file_obj)
    finally:
        file_obj.close()

顺便说一句,你应该避免使用名为" file"的局部变量。因为它是一种内置类型。