Python跨目录读取JSON文件出现旧版本数据问题求助
跨目录读取JSON文件返回旧数据的问题
问题场景
从其他目录读取apply.json时得到旧版本数据,但同目录下其他JSON文件读取正常;将该文件复制到当前工作目录后,能正常读取正确内容。
示例代码
with open("../frontend/src/components/Presets/apply.json") as infile: settings_data = json.load(infile) print(settings_data)
原apply.json内容
{ "Active": "Preset 0", "reqAmountMin": 0, "reqAmountMax": 0 }
不同路径的读取输出
- 原目录读取输出:
{'reqAmountMin': 0, 'reqAmountMax': 90}
- 当前目录读取输出:
{'Active': 'Preset 0', 'reqAmountMin': 0, 'reqAmountMax': 0}
已确认路径正确并重建文件,但问题仍存在,以下是解决建议:
解决建议
1. 禁用文件缓冲读取
Python或操作系统可能缓存了旧文件内容,尝试禁用缓冲读取:
with open("../frontend/src/components/Presets/apply.json", buffering=0) as infile: settings_data = json.load(infile) print(settings_data)
2. 验证文件绝对路径
相对路径可能因当前工作目录差异导致读错文件,打印绝对路径确认:
import os file_path = "../frontend/src/components/Presets/apply.json" print(os.path.abspath(file_path))
手动检查该绝对路径下的文件内容是否符合预期。
3. 刷新文件系统缓存
部分操作系统会缓存文件内容,可尝试以下操作:
- 重启Python进程或终端
- Linux环境执行
sync命令刷新缓存;Windows环境可重启文件资源管理器或系统
4. 直接检查原文件内容
用命令行工具直接查看原路径文件,确认内容是否正确:
# Linux/macOS cat ../frontend/src/components/Presets/apply.json # Windows type ../frontend/src/components/Presets/apply.json
如果命令行输出和预期一致,说明问题出在Python读取环节;如果不一致,排查文件同步或版本控制问题(如Git分支差异、云同步未完成)。
5. 排查链接文件
原路径文件可能是硬链接或软链接,指向了旧版本文件:
- Linux/macOS:执行
ls -l ../frontend/src/components/Presets/apply.json查看是否为链接 - Windows:执行
dir /a ../frontend/src/components/Presets/apply.json,查看文件属性是否为快捷方式
内容的提问来源于stack exchange,提问作者Average Guy
相关产品推荐
相关产品推荐

