Python如何批量读取目录下.iris文件提取指定键并导出为CSV
解决方案
你现有的代码仅实现了读取并打印.iris文件的文本内容,缺少JSON解析、字段提取、CSV导出的逻辑,以下是可直接运行的完整实现:
import os import json import csv # 配置项:修改为你的.iris文件所在目录路径 IRIS_DIR = r"替换为你的目录路径,比如C:\Users\xxx\iris_files" # 配置需要提取的字段 EXTRACT_FIELDS = ('uid', 'enabled', 'login', 'name') # 输出的CSV文件路径,默认保存在IRIS_DIR同目录下 OUTPUT_CSV = os.path.join(IRIS_DIR, "result.csv") def main(): # 存储所有提取到的记录 records = [] # 遍历目录下所有文件 for filename in os.listdir(IRIS_DIR): # 只处理后缀为.iris的文件 if not filename.endswith(".iris"): continue file_path = os.path.join(IRIS_DIR, filename) try: # 读取并解析JSON内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read().strip() # 兼容处理部分文件末尾多余逗号、缺失闭合}的问题,文件格式标准可删除下一行 content = content.rstrip(',') + '}' if not content.endswith('}') else content iris_data = json.loads(content) # 提取指定字段,字段不存在时默认留空 record = [iris_data.get(field, "") for field in EXTRACT_FIELDS] records.append(record) except Exception as e: print(f"处理文件{filename}失败:{str(e)}") # 将记录写入CSV文件 with open(OUTPUT_CSV, 'w', encoding='utf-8-sig', newline='') as f: writer = csv.writer(f) # 写入表头 writer.writerow(EXTRACT_FIELDS) # 写入所有记录 writer.writerows(records) print(f"处理完成,结果已保存到{OUTPUT_CSV},共导出{len(records)}条记录") if __name__ == "__main__": main()
注意事项
- 运行前请将
IRIS_DIR的值替换为你存放.iris文件的实际目录路径 - 代码默认提取的是JSON最外层的对应字段,若你需要提取
global嵌套字典内的字段,可将iris_data.get修改为iris_data['global'].get - 如果你的.iris文件JSON格式完全标准,可以删除兼容处理的那行代码,直接用
iris_data = json.load(f)读取即可 - 用
utf-8-sig编码写入CSV是为了兼容Excel打开时不会出现中文乱码,不需要可修改为utf-8
内容的提问来源于stack exchange,提问作者Phani Kumar
相关产品推荐
相关产品推荐

