从multiple.zip-in-fold读取.txt

2024-10-04 15:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件夹(不是压缩的)包含多个zip文件(文件夹中没有其他文件类型)。每个zip都有相同类型的文本文件,其中保存了不同的数据。在

我知道如何分别读入每一个,但我希望循环过程,而不必键入每个zip名称。zipfile归档文件似乎不允许使用通配符,因此我无法使用此方法循环。是否可以使用glob循环该过程?在

目标是在不提取所有zipfiles的情况下获得机构名称。在

单文件读取

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文件并循环获取文本文件-我无法从文件夹中的所有zip文件中打印机构名称。我当前的代码只从文件夹中最后一个zip文件的文本文件中打印最后一个机构的名称。我缺少一些复合语句结构吗?在

def csv_dict_reader(file_obj):
reader=csv.DictReader(file_obj, delimiter=',')
for row in reader:
print(row['agency_name'])

if name == 'main':
with archive.open('agency.txt')as f_obj:
csv_dict_reader(f_obj)

Whatcom运输管理局


Tags: 文件csvnametestimport文件夹objzip
3条回答

示例代码

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()

因为我不能评论富士科马兰的评论。在

这是固定代码。在

import glob
import zipfile

dirName = 'C:/test/'
zipList = glob.glob(dirName + '*.zip')
print(zipList)

for zipname in zipList:
    archive = zipfile.ZipFile(zipname)
    fileList = archive.namelist()
    for fileName in fileList:
        if fileName.endswith('.txt'):
            archive.extract(fileName)
            print(fileName)
    archive.close()

谢谢Jean-Francois!在

for archive_name in glob.glob('C:\\NTM\\Test\\*.zip'):  
    archive=zipfile.ZipFile(archive_name)  
    testagency=archive.open('agency.txt')  
    testagency.read() 

相关问题 更多 >

    热门问题