我在想如何告诉Python只使用通配符从zip文件夹中提取“.txt”文件。此代码工作正常,我:Python Zip文件,通配符
extractor.extract("\websitefiles\test.hmtl")"
我如何使用相同的代码以解当前目录中的所有.txt文件?我在想这样的事情:
extractor.extract(".*.txt")
但它失败了..任何想法?
我在想如何告诉Python只使用通配符从zip文件夹中提取“.txt”文件。此代码工作正常,我:Python Zip文件,通配符
extractor.extract("\websitefiles\test.hmtl")"
我如何使用相同的代码以解当前目录中的所有.txt文件?我在想这样的事情:
extractor.extract(".*.txt")
但它失败了..任何想法?
我只需要python来提取当前目录下的.txt文件,这些文件不大于3兆字节。
#!/usr/bin/env python
import zipfile
from contextlib import closing
MiB = 2**20 # mebibyte
with closing(zipfile.ZipFile("example.zip")) as zfile:
for info in zfile.infolist():
if info.filename.endswith('.txt') and 0 < info.file_size <= 3*MiB:
zfile.extract(info)
您需要获取ZIP中所有文件的列表,然后请求每个文件一次一个。 Zipfile有namelist()
方法给你这个列表。
首先,您需要文件名列表,使用namelist()
。 然后,您可以过滤的“* .txt”文件与txtfiles = fnmatch.filter(fn_list,"*.txt")
现在,你可以通过一个解压缩文件之一:
extracts = [ extractor.extract(txt) for txt in txtfiles ]
它无法识别fn_list是什么.. – user715578 2011-04-22 13:06:16
@ user715578:'fn_list == filename_list'它是通过'namelist()'获得的列表 – joaquin 2011-04-22 15:12:42
使用功能namelist()
来获取文件的名称。然后从列表中选择txt文件并逐个提取它们。
哦,我会怎么做,如果我只是想提取.txt文件不超过3兆的? – user715578 2011-04-22 12:34:43
@ user715578:在由'ZipFile.getinfo(name)'返回的对象上使用'file_size'成员。 – Skurmedel 2011-04-22 12:40:29
呃,我超级迷路了。任何人都可以给我一个示例代码?我只需要python来提取当前目录下的.txt文件,这些文件不大于3兆字节。 – user715578 2011-04-22 12:59:36