Python 如何修改多个json文件
我有一个包含100个json文件的文件夹,我必须在每个文件的开头添加Python 如何修改多个json文件,python,json,Python,Json,我有一个包含100个json文件的文件夹,我必须在每个文件的开头添加[,在结尾添加] 文件结构为: { item } 但是,我需要像这样对它们进行转换: [{ item }] 如何做到这一点?虽然我通常会建议对与json相关的任何内容使用json.load和json.dump,但由于您的具体要求,以下纸条应该足够了: 导入操作系统 chdir('目录的路径') 对于os.listdir('.')中的fp: 如果fp.endswith('.json'): f=打开(fp,'r+') conte
[
,在结尾添加]
文件结构为:
{
item
}
但是,我需要像这样对它们进行转换:
[{
item
}]
如何做到这一点?虽然我通常会建议对与json相关的任何内容使用
json.load
和json.dump
,但由于您的具体要求,以下纸条应该足够了:
导入操作系统
chdir('目录的路径')
对于os.listdir('.')中的fp:
如果fp.endswith('.json'):
f=打开(fp,'r+')
content=f.read()
f、 搜索(0)
f、 截断()
f、 写入('['+content+']')
f、 关闭()
您可以使用glob模块解析所有文件。然后您可以读取内容,然后修改该内容并写回文件
from glob import glob
for filename in glob('./json/*.json'):
f = open(filename, 'r')
contents = f.read()
f.close()
new_contents = f"[{contents}]"
f = open(filename, 'w')
f.write(new_contents)
f.close()
$ jq '.=[.]' test.json | sponge test.json
$ cat test.json
TL;博士
#一个文件
$jq'.=[.]'test.json |海绵test.json
#许多文件
找到-键入f-name'*.json'-exec sh-c“jq.”=[.]'“{}”海绵“{}”\;
崩溃
让我们拿一个示例文件
$cat test.json
{
“你好”:“世界”
}
$jq'=[.]'test.json
上面的点(.)表示根节点。所以我把根节点放在括号里。因此,我们得到:
[
{
“你好”:“世界”
}
]
现在我们需要获取输出并将其放回文件中
from glob import glob
for filename in glob('./json/*.json'):
f = open(filename, 'r')
contents = f.read()
f.close()
new_contents = f"[{contents}]"
f = open(filename, 'w')
f.write(new_contents)
f.close()
$ jq '.=[.]' test.json | sponge test.json
$ cat test.json
[
{
“你好”:“世界”
}
]
接下来,让我们找到所有要执行此操作的json文件
$ find . -type f -name '*.json'
./test.json
我们可以迭代find命令的每一行,并按如下方式对其进行分类:
$find-类型f-名称'*.json'-exec cat{}\;
{
“你好”:“世界”
}
或者我们可以编写我们需要的jq命令。文件名被传递到-exec
和\之间的大括号中代码>
$find-键入f-name'*.json'-exec sh-c“jq.”=[.]'“{}”海绵“{}”\;
感谢json.dump([json.load(infle)],outfile)
。使用GNU sed:sed-i'1s/^/[;$s/$/]/'file.json