gpt4 book ai didi

python - 将 zip 解压缩到内存,解析内容

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:21 25 4
gpt4 key购买 nike

我想将 zip 文件的内容读入内存而不是将它们提取到光盘,在存档中找到特定文件,打开文件并从中提取一行。

是否可以打开并解析一个StringIO 实例?建议?提前致谢。

zfile = ZipFile('name.zip', 'r')

for name in zfile.namelist():
if fnmatch.fnmatch(name, '*_readme.xml'):
name = StringIO.StringIO()
print name # prints StringIO instances
open(name, 'r') # IO Error: No such file or directory...

我发现了一些类似的帖子,但似乎都没有解决这个问题:Extracting a zipfile to memory?

最佳答案

IMO 只使用 read 就足够了:

zfile = ZipFile('name.zip', 'r')
files = []
for name in zfile.namelist():
if fnmatch.fnmatch(name, '*_readme.xml'):
files.append(zfile.read(name))

这将生成一个包含与模式匹配的文件内容的列表。

测试:然后您可以通过遍历列表来解析内容:

for file in files:
print(file[0:min(35,len(file))].decode()) # "parsing"

或者更好地使用仿函数:

import zipfile as zip
import os
import fnmatch

zip_name = os.sys.argv[1]
zfile = zip.ZipFile(zip_name, 'r')

def parse(contents, member_name = ""):
if len(member_name) > 0:
print( "Parsed `{}`:".format(member_name) )
print(contents[0:min(35, len(contents))].decode()) # "parsing"

for name in zfile.namelist():
if fnmatch.fnmatch(name, '*.cpp'):
parse(zfile.read(name), name)

这样就没有数据无缘无故地保存在内存中,内存占用空间更小。如果文件很大,这可能很重要。

关于python - 将 zip 解压缩到内存,解析内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com