如何在file.write()结尾添加换行符?

Rap*_*nah 8 python json python-3.x

我有一个简单的python脚本输出到一个author.json文件.问题是它不包含文件末尾的换行符.

添加换行符到最后的最佳方法是author.json什么?

#!/usr/bin/env python

import json

with open('input.json', 'r') as handle:
    data = json.load(handle)

output = open('author.json', 'w')

author = {}

for key, value in data.items():
    if key == 'id':
        author['id'] = value


output.write(json.dumps(author, indent=4))
Run Code Online (Sandbox Code Playgroud)

Ana*_*mar 13

对于Python 3.x,你也可以使用print()函数,它会为你添加换行符,所以output.write()你不会这样做 -

print(json.dumps(author, indent=4),file=output)
Run Code Online (Sandbox Code Playgroud)

示例/演示 -

>>> with open('a.txt','w') as f:
...     print('asd',file=f)
...     print('asd1',file=f)
...     print('asd2',file=f)
Run Code Online (Sandbox Code Playgroud)

文件a.txt包含 -

asd
asd1
asd2
Run Code Online (Sandbox Code Playgroud)


Bur*_*lid 8

手动添加行尾:

output.write('{}\n'.format(json.dumps(author, indent=4)))
Run Code Online (Sandbox Code Playgroud)

我希望你意识到你的脚本只会在输出中有最后一个id的值; 当你覆盖循环中的键时(字典不能有重复的键).

因此,即使id原始文件中有5个值,结果数据中也只有一个值.