python - Python将文件夹目录中的多个JSON文件转换为CSV
问题描述
我有很多 JSON 文件,我将它们放在我的文件夹中,我想将它们转换为 CSV 格式,我应该使用 import glob 吗?? 我是新手,怎么修改我的代码,</p>
#-*-coding:utf-8-*-
import csv
import json
import sys
import codecs
def trans(path):
jsonData = codecs.open('C:/Users/jeri/Desktop/1', '*.json', 'r', 'utf-8')
# csvfile = open(path+'.csv', 'w')
# csvfile = open(path+'.csv', 'wb')
csvfile = open('C:/Users/jeri/Desktop/1.csv', 'w', encoding='utf-8', newline='')
writer = csv.writer(csvfile, delimiter=',')
flag = True
for line in jsonData:
dic = json.loads(line)
if flag:
keys = list(dic.keys())
print(keys)
flag = False
writer.writerow(list(dic.values()))
jsonData.close()
csvfile.close()
if __name__ == '__main__':
path=str(sys.argv[0])
print(path)
trans(path)
解决方案
是的,使用 glob 将是遍历文件夹中 .json 文件的好方法!但是 glob 与文件的读/写没有任何关系。导入 glob 后,可以这样使用:
for curr_file in glob.glob("*.json"):
# Process each file here
我看到您已经使用 json 模块来读取您的代码片段。我会说更好的方法是使用熊猫。
df = pd.read_json()
我这样说是因为有了 pandas 库,您可以使用简单地将 .json 转换为 .csv
df.to_csv('file_name.csv')
将这三个结合在一起,它看起来像这样:
for curr_file in glob.glob("*.json"):
# Process each file here
df = pd.read_json(curr_file)
df.to_csv('file_name.csv')
另外请注意,如果您的 json 有嵌套对象,则不能直接转换为 csv,您必须在转换之前确定数据的组织。
推荐阅读
- .net - 在 SQL Server 的视图中引用变量
- java - Springboot 不为 OffsetDateTime 字段赋值
- c# - 使用等于运算符对无穷大进行有效检查吗?
- ruby-on-rails - Puma 服务器因 ThreadError 停止(死锁;递归锁定)
- php - 我会在一页中使用 $ _POST 两次
- python - “apyori模块的RelationRecord对象”先验算法python
- php - 将 SEO 友好的 URL 重定向回具有正常链接的页面
- ios - 如何模仿 Apple Map 的翻译表视图?
- java - 调用嵌套静态 Asynctask 的 Lint 泄漏警告
- php - 添加场景输出/从步骤返回数据并显示