我有一个包含2个文件的zip文件。我需要将zip中的每个文件名设置为不同的变量。但我不知道该怎么做。
以下代码将提取这两个文件,并将列出两个文件名,但对于我的生活,我只能获取要在最后提取的文件上设置的变量。
以下是带有2个文件的测试.zip的链接。一个文件是“a”,另一个文件是“b.txt”:http://www.fileconvoy.com/dfl.php?id=g676b9e355f65d84d9999232466917f2b06cc5d45e
我正在寻找的输出是:
filename1 = a
filename2 = b.txt
我不知道怎么做。这是我的代码。
#!/usr/bin/python
outpath = '/home/ubuntu/untitled/'
fn = 'myzipfile.zip'
import zipfile
fh = open(fn, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, outpath)
fh.close()
file = zipfile.ZipFile(fn, "r")
for info in file.infolist():
print info.filename
filename = info.filename
print "Extracted Filename: " + filename
> a
> b.txt
> Extracted Filename b.txt
任何人都可以告诉我如何创建一个递增变量名称 - 因为如果我得到一个包含3个文件的.zip,我希望它是filename1,filename2,filename3?
由于
答案 0 :(得分:0)
您可以使用 shutil.copyfileobj
将提取的文件对象复制到您想要的任何名称的文件中。
import zipfile
import shutil
with zipfile.ZipFile('file_test.zip', 'r') as myfile:
target_names = ['filename1.txt', 'filename2.txt'] # names you want it to be
for item, name in zip(myfile.infolist(), target_names):
shutil.copyfileobj(myfile.open(item), open(name, 'w')) # copy extracted file object to a desired file
print 'The original file %s in zip file is now extracted and renamed to %s' % (item.filename, name)