Python Zip文件,通配符

3 投票
4 回答
6037 浏览
提问于 2025-04-16 16:14

我在想怎么让Python从一个压缩文件中提取出所有的“.txt”文件,使用通配符来实现。这个代码对我来说运行得很好:

extractor.extract("\websitefiles\test.hmtl")"

我想知道怎么用同样的代码来提取当前目录下的所有.txt文件?我在考虑像这样做:

extractor.extract(".*.txt")

但是这样没成功……有什么想法吗???

4 个回答

2

你需要先获取ZIP文件里面所有文件的列表,然后一个一个地询问每个文件。Zipfile库里有一个叫namelist()的方法,可以帮你得到这个文件列表。

6

首先,你需要一个文件名的列表,可以用 namelist() 来获取。接着,你可以用 txtfiles = fnmatch.filter(fn_list,"*.txt") 来筛选出所有的 "*.txt" 文件。现在你可以一个一个地提取这些文件了:

extracts = [ extractor.extract(txt) for txt in txtfiles ]
4

我只需要用Python来提取当前目录下不超过3兆字节的.txt文件。

#!/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)

撰写回答