使用tempfile将JSON转CSV时出现“文件或目录不存在”错误求助
问题解决思路
核心问题排查与修复
文件名不匹配导致文件找不到
你代码里实际生成的JSON文件是temp.json,但调用转换函数时传的是/testjson.json,文件名完全对应不上,这是报错的直接原因。把json_to_csv的调用参数改成'/temp.json'即可。路径拼接方式不规范
不要用字符串直接相加的方式拼接路径(path + fileInput),尤其是当fileInput开头带斜杠时,容易出现路径格式错误。改用os.path.join工具函数,同时去掉fileInput开头的斜杠:inputFile = open(os.path.join(path, fileInput.lstrip('/')))JSON数据结构与处理逻辑不匹配
你的testjson是单个字典,但转换函数里写了data[0].keys(),默认期望输入是字典组成的列表。如果是单条数据,保存时要把它包装成列表:json.dump([testjson], fp)这样加载后
data就是列表,能正常获取表头和遍历行数据。
修正后的完整代码示例
import tempfile import os import json import csv testjson = { "key1": "value1", "key2": "value2", "key3": "value3" } def sso(): # 创建临时目录 tempdir = tempfile.mkdtemp() path = tempdir # os.path.join(tempdir)等价于直接用tempdir,此处简化 # 保存JSON数据(包装成列表适配后续逻辑) with open(os.path.join(path, 'temp.json'), 'w') as fp: json.dump([testjson], fp) # JSON转CSV函数 def json_to_csv(path, fileInput, fileOutput): # 规范路径拼接 input_path = os.path.join(path, fileInput.lstrip('/')) with open(input_path) as inputFile: data = json.load(inputFile) output_path = os.path.join(path, fileOutput.lstrip('/')) with open(output_path, 'w', newline='') as fp: output = csv.writer(fp) # 写入表头 output.writerow(data[0].keys()) # 写入每行数据 for row in data: output.writerow(row.values()) # 调用转换函数,修正文件名参数 json_to_csv(path, '/temp.json', '/xxx.csv')
内容的提问来源于stack exchange,提问作者Christine M
相关产品推荐
相关产品推荐

