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

解析多个JSON文件时始终返回空列表[]的技术求助

排查Python遍历JSON文件返回空列表的问题

你的代码执行后返回空列表,核心问题出在路径匹配错误,以下是具体原因和修复方案:

问题原因

  1. 当前工作目录与传入路径冲突
    你已经通过os.chdir('C:/Users/Hasnain/Downloads/assignment (1)/assignment/Json_dump')切换到了目标JSON目录,之后调用get_file("Json_dump")时,程序会在当前目录(也就是已经进入的Json_dump文件夹)下寻找名为Json_dump的子文件夹,而这个子文件夹不存在,所以遍历不到任何文件。

  2. 冗余的文件列表覆盖(非核心但可优化)
    os.walk已经返回了当前目录下的files列表,你又用glob.glob重新赋值覆盖了这个变量,虽然逻辑上能找到文件,但属于冗余操作,没必要重复处理。

修复方案

方案一:修正传入的路径

既然已经切换到目标目录,直接传入当前目录.即可:

import json
import sys
import os
import glob

os.chdir('C:/Users/Hasnain/Downloads/assignment (1)/assignment/Json_dump')

def get_file(filepath):
  all_files = []
  for root,dirs,files in os.walk(filepath):
    # 用os.walk返回的files筛选json文件,替代glob
    for f in files:
      if f.endswith('.json'):
        all_files.append(os.path.abspath(os.path.join(root, f)))
  return all_files

json_data = get_file(".")
print(json_data)

方案二:不切换目录,直接传入完整路径

如果不需要切换工作目录,直接用完整路径调用函数更清晰:

import json
import sys
import os
import glob

def get_file(filepath):
  all_files = []
  for root,dirs,files in os.walk(filepath):
    for f in files:
      if f.endswith('.json'):
        all_files.append(os.path.abspath(os.path.join(root, f)))
  return all_files

# 直接传入完整目标路径
json_data = get_file("C:/Users/Hasnain/Downloads/assignment (1)/assignment/Json_dump")
print(json_data)

额外优化:用glob递归遍历简化代码

如果不需要os.walk的其他功能,用glob.glob的递归模式可以更简洁:

import glob
import os

def get_file(filepath):
    return [os.path.abspath(f) for f in glob.glob(os.path.join(filepath, '**/*.json'), recursive=True)]

json_data = get_file("C:/Users/Hasnain/Downloads/assignment (1)/assignment/Json_dump")
print(json_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:39:09