从文件夹中的多个.zip读取.txt
问题描述:
我有一个包含多个zip文件(文件夹内没有其他文件类型)的文件夹(未压缩)。每个zip都有相同类型的文本文件,其中包含保存的不同数据。从文件夹中的多个.zip读取.txt
我知道如何分别读取每一个,但我期待循环过程而不必键入每个zip名称。 zipfile归档似乎不允许通配符,因此我无法循环使用此方法。是否有可能使用glob循环进程?
目标是在不提取所有zip文件的情况下获取代理机构名称。
单个文件读取
import os
os.listdir('C:\\NTM\\Test\\')
['00003_32_332.zip', '00011_273_569.zip', '00012_258_276.zip']
import glob
glob.glob('C:\\NTM\\Test\\*.zip')
['C:\\NTM\\Test\\00003_32_332.zip', 'C:\\NTM\\Test\\00011_273_569.zip', 'C:\\NTM\\Test\\00012_258_276.zip']
import zipfile
archive=zipfile.ZipFile('C:\\NTM\\Test\\00011_273_569.zip')
testagency=archive.open('agency.txt')
testagency.read()
'agency_id,agency_name,nVRT,ValleyRide'
更新:现在
,那我就可以通过ZIP文件和循环遍历来获取文本文件 - 我无法从所有的压缩文件的打印AGENCY_NAME夹。我目前的代码只打印文件夹中最后一个zip文件的文本文件中最后一个代理的名称。我是否缺少一些复合语句结构?
DEF csv_dict_reader(file_obj):
读者= csv.DictReader(file_obj,分隔符= ' ')
为行中的读取器:
打印(行[' AGENCY_NAME'])如果名 == '主 ':
与archive.open(' agency.txt')作为f_obj:
csv_dict_reader(f_obj)
霍特科姆交通管理局
答
for archive_name in glob.glob('C:\\NTM\\Test\\*.zip'):
archive=zipfile.ZipFile(archive_name)
testagency=archive.open('agency.txt')
testagency.read()
答
示例代码
import glob
import zipfile
dirName = '/backup/'
zipList = glob.glob(diName+'*.zip')
for zipname in zipList:
archive = zipfile.ZipFile(zipname)
fileList = archive.namelist()
for fileName in fileList:
if fileName.endswith('.txt'):
archive.extract(fileName)
archive.close()
+0
谢谢!我觉得这个东西缺少了吗?它不会返回我可以与您分享的错误,但它也不会运行 –
'在glob.glob ARCHIVE_NAME( 'C:\\ \\ NTM测试\\ *。zip文件。'):档案= zipfile.ZipFile(ARCHIVE_NAME) '。你知道循环吗? –
archive_name!那是不是 –
啊,好的,我误解了你的问题。因此,我的回答并没有解决你的问题。 – JohanL