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

Python遍历嵌套目录读取JSON报FileNotFoundError问题求助

报错原因
  • 变量赋值顺序错误:原代码在遍历fileList的循环外就提前调用os.path.join(dirName, file)生成绝对路径,此时file变量还未定义,或是之前循环的残留值,并没有指向你需要的activities.json文件,生成的路径自然无效。
  • 路径拼接逻辑错误:即便是后续找到了目标JSON文件,你也没有重新给abs_path赋值,读取时用的还是错误路径,Python默认会从脚本所在的工作目录查找文件名,自然找不到对应文件。
修复后的代码
import os
import json
from pprint import pprint
import win32com.client as win32 # pip install pywin32
import pandas as pd # 后续导出Excel需要用到,无依赖可执行 pip install pandas openpyxl

rootDir = 'C:/Users/Adam/Desktop/Linkedin/linkedin_hb_ma'
target_member_id = "1eb95ebb-d87d-4aac-XX-XX182"
target_json_name = "activities.json"
# 存储所有读取到的json数据,后续方便导出Excel
all_data = []

for dirName, subdirList, fileList in os.walk(rootDir, topdown=False):
    # 判断当前目录是不是目标会员ID目录
    if dirName.endswith(target_member_id):
        print(f'找到目标会员目录: {dirName}')
        for file in fileList:
            if file.endswith(target_json_name):
                # 找到目标文件后再拼接绝对路径,保证路径正确性
                abs_path = os.path.join(dirName, file)
                print(f'读取目标文件: {abs_path}')
                # 指定encoding避免中文乱码,用with语法避免资源泄漏
                with open(abs_path, 'r', encoding='utf-8') as f:
                    json_data = json.load(f)
                    pprint(json_data)
                    all_data.append(json_data)

# 导出Excel补充逻辑,可根据你的JSON结构调整字段
if all_data:
    df = pd.json_normalize(all_data)
    df.to_excel('linkedin_activities.xlsx', index=False)
    print("Excel文件已导出成功")
改动说明
  • 调整了路径拼接的位置:只有在遍历到目标activities.json文件后才拼接绝对路径,从根源上避免路径错误
  • 改用with open语法读取文件,避免文件资源泄漏,同时指定编码适配中文内容
  • 补充了JSON转Excel的实现逻辑,基于pandas自动扁平化JSON结构导出,可根据实际业务字段需求调整导出规则

内容的提问来源于stack exchange,提问作者aymane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:04