如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?
Posted
技术标签:
【中文标题】如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?【英文标题】:How to read csv files from multiple zip folders located in the same directory using python? 【发布时间】:2020-01-29 23:11:03 【问题描述】: 我有多个名为 zip_folder_1、zip_folder_2、...、zip_folder_n 的 zip 文件夹。 所有这些 zip 文件夹都位于同一目录中。这些 zip 文件夹中的每一个都包含一个名为“selected_file.csv”的 csv 文件。 我需要读取位于每个 zip 文件夹中的每个“selected_file.csv”并将它们连接到一个文件中有人可以提示我解决此问题所需的 python 代码吗?感谢您的帮助!
【问题讨论】:
请先向我们展示您自己的努力。我们可以为您提供有关如何改进代码的提示,但我们无法为您编写代码。 【参考方案1】:这应该会在您的工作目录中生成concatenated_data.csv
,并假定my_data_dir
中的所有文件都是包含数据的zip 文件。
import os, numpy as np, zipfile
def add_data_to_file(new_data,file_name):
if os.path.isfile(file_name):
mode = 'ab'
else:
mode = 'wb'
with open(file_name,mode) as f:
np.savetxt(f,np.array([new_data]),delimiter=',')
my_data_dir = 'C:/my/zip/data/dir/'
data_files = os.listdir(my_data_dir)
for data_file in data_files:
full_path = os.path.join(my_data_dir,data_file)
with zipfile.ZipFile(full_path,'r',zipfile.ZIP_DEFLATED) as zip_file:
with zip_file.open('selected_file.csv','r') as selected_file:
data = np.loadtxt(selected_file,delimiter=",")
add_data_to_file(data,'concatenated_data.csv')
【讨论】:
以上是关于如何使用 python 从位于同一目录中的多个 zip 文件夹中读取 csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 dask/fastparquet 从多个目录中读取多个 parquet 文件(具有相同架构)
如何在 python 循环中更新 matpplotlib 库图,该图位于 Jupyter 笔记本中的同一位置?