Python-在多个Zip文件中连接多个文本文件
我在使用pandas加载/连接压缩文件中的txt文件时遇到问题。这里有很多关于pd.concat(zip_file.open)的例子,但在我的例子中仍然没有任何效果,因为我有多个zip文件和多个txt文件 例如,假设我在一个特定文件夹“Main”中有两个压缩文件。每个压缩文件包含五个txt文件。我想阅读所有这些txt文件,并将它们全部放在一起。在我的真实示例中,我将有几十个zip文件夹,每个文件夹包含五个txt文件 你能帮忙吗 文件夹和文件结构,例如:Python-在多个Zip文件中连接多个文本文件,python,pandas,zipfile,Python,Pandas,Zipfile,我在使用pandas加载/连接压缩文件中的txt文件时遇到问题。这里有很多关于pd.concat(zip_file.open)的例子,但在我的例子中仍然没有任何效果,因为我有多个zip文件和多个txt文件 例如,假设我在一个特定文件夹“Main”中有两个压缩文件。每个压缩文件包含五个txt文件。我想阅读所有这些txt文件,并将它们全部放在一起。在我的真实示例中,我将有几十个zip文件夹,每个文件夹包含五个txt文件 你能帮忙吗 文件夹和文件结构,例如: 'C:/User/Example/Main
'C:/User/Example/Main'
TAG_001.zip
sample001_1.txt
sample001_2.txt
sample001_3.txt
sample001_4.txt
sample001_5.txt
TAG_002.zip
sample002_1.txt
sample002_2.txt
sample002_3.txt
sample002_4.txt
sample002_5.txt
我是这样开始的,但之后的一切都是错误:
import os
import glob
import pandas as pd
import zipfile
path = 'C:/User/Example/Main'
ziplist = glob.glob(os.path.join(path, "*TAG*.zip"))
这不是很有效,但它应该让你知道如何做到这一点
import os
import zipfile
import pandas as pd
frames = {}
BASE_DIR = 'C:/User/Example/Main'
_, _, zip_filenames = list(os.walk(BASE_DIR))[0]
for zip_filename in zip_filenames:
with zipfile.ZipFile(os.path.join(BASE_DIR, zip_filename)) as zip_:
for filename in zip_.namelist():
with zip_.open(filename) as file_:
new_frame = pd.read_csv(file_, sep='\t')
frame = frames.get(filename)
if frame is not None:
pd.concat([frame, new_frame])
else:
frames[filename] = new_frame
#once all frames have been concatenated loop over the dict and write them back out
根据数据量,您必须设计一个平衡处理能力/内存/磁盘空间的解决方案。此解决方案可能会占用大量内存。文件是否为熊猫可以读取的“csv”格式?是。他们用pd.read\u csv单独阅读。