You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:15:00