python如何合并批量输出
阿神
阿神 2017-04-17 17:46:23
[Python讨论组]

A文件夹 里面有
1.json
2.json
3.json
.....

格式为

{
   "hello": "hello",
   "data": [
        {
            "id": "123456",
            "create_time": "2016-03-28 11:41:00",
            "phone": "138888****",
            "name": "aaa"
        },
        {
            "id": "456789",
            "create_time": "2016-03-28 11:41:00",
            "phone": "137777****",
            "name": "bbb"
        }
    ]
}

遍历A文件夹
合并data内容
输出1个json和csv

阿神
阿神

闭关修行中......

全部回复(4)
大家讲道理

Python2:

import os
import csv
import glob
import json

data = []

for fname in glob.glob(os.path.join('A', '*.json')):
    with open(fname) as f:
        jf = json.loads(f.read())
        data.extend(jf['data'])

with open('output.json', 'w') as f:
    print >>f, json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))

with open('output.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow([key for key, value in data[0].items()])
    for d in data:
        writer.writerow([value for key, value in d.items()])

Python3:

import os
import csv
import glob
import json

data = []

for fname in glob.glob(os.path.join('A', '*.json')):
    with open(fname) as f:
        jf = json.loads(f.read())
        data.extend(jf['data'])

with open('output.json', 'w') as f:
    print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')), file=f)

with open('output.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow([key for key, value in data[0].items()])
    for d in data:
        writer.writerow([value for key, value in d.items()])
  1. 對於你說的合併,我這邊僅僅是將資料一筆一筆的疊加上去,並沒有作 id 檢查等處理。

  2. csv 的輸出要求,可能也要視你想要的格式進行調整。

下面是相關的一些文檔,看完後對你會很有幫助:

  • glob

  • csv

  • os.path

  • json

PHPz

遍历目录用os和os.walk
json处理用json模块
csv处理用csv模块

迷茫
import glob
glob.glob("*.jon")

也可以。

伊谢尔伦

谢邀

import os.path
import glob
import json

path = os.path.join("A","*.json")
fileList = glob.glob(path)
jsonList = []
for filename in fileList:
    fp = open(filename)
    jsonList.append(
        json.load(fp)
    ) 
    fp.close()
    
for j in jsonList:
    dosomething(j) 
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号