如何使用Python读取文件夹内同名成对的CSV与JSON文件
问题描述
文件夹内文件结构如下:
abc.csv abc.json bcd.csv bcd.json efg.csv efg.json
以此类推,存在多组成对的同名CSV与JSON文件。需要读取每一对同名文件,执行相同操作后再处理下一对文件,设想的伪代码如下:
for files in folder_name: df_csv=pd.read_csv('abc.csv') df_json=pd.read_json('abc.json') # some script to execute #now read the next pair and repeat for all files
实现方案
可以按以下步骤实现:
- 获取文件夹内所有文件名:用
os.listdir()或者pathlib模块遍历目标文件夹,拿到所有文件的名称。 - 提取唯一的文件前缀:把每个文件名的后缀去掉,得到前缀(比如
abc.csv变成abc),然后去重,这样就得到所有成对文件的共同名称。 - 遍历每个前缀,读取对应文件并处理:对每个前缀,拼接出对应的
.csv和.json路径,分别读取后执行你的业务逻辑。
示例代码(os模块版)
import os import pandas as pd # 替换为你的目标文件夹路径 folder_path = "./your_target_folder" # 获取文件夹内所有文件 all_files = os.listdir(folder_path) # 提取所有唯一的文件前缀 file_prefixes = set() for file in all_files: prefix, _ = os.path.splitext(file) file_prefixes.add(prefix) # 遍历处理每一对文件 for prefix in file_prefixes: csv_path = os.path.join(folder_path, f"{prefix}.csv") json_path = os.path.join(folder_path, f"{prefix}.json") # 检查文件对是否完整,避免缺失某一个文件 if os.path.exists(csv_path) and os.path.exists(json_path): df_csv = pd.read_csv(csv_path) df_json = pd.read_json(json_path) # 这里写入你的处理逻辑 print(f"正在处理 {prefix} 对应的文件对") # your script here else: print(f"警告:{prefix} 的文件对不完整,跳过处理")
示例代码(pathlib模块版,Python3.4+)
from pathlib import Path import pandas as pd # 替换为你的目标文件夹路径 folder_path = Path("./your_target_folder") # 提取所有唯一的文件前缀 file_prefixes = {file.stem for file in folder_path.iterdir() if file.is_file()} # 遍历处理每一对文件 for prefix in file_prefixes: csv_file = folder_path / f"{prefix}.csv" json_file = folder_path / f"{prefix}.json" if csv_file.exists() and json_file.exists(): df_csv = pd.read_csv(csv_file) df_json = pd.read_json(json_file) # 这里写入你的处理逻辑 print(f"处理 {prefix} 文件对中...") # your script here else: print(f"{prefix} 文件对缺失,跳过处理")
内容的提问来源于stack exchange,提问作者dsnoob27
相关产品推荐
相关产品推荐

