2015-08-09 18 views
5

Tôi có một tập lệnh python đơn giản xuất ra tệp author.json. Vấn đề là nó không bao gồm một dòng mới ở phần cuối của tập tin.Cách thêm dòng mới vào cuối tệp.write()?

Cách tốt nhất để thêm dòng mới vào cuối author.json là gì?

#!/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)) 
+3

'output.write ('\ n')'? hoặc 'print (json.dumps (tác giả, indent = 4), file = output)' –

+0

Hey, bạn biết gì =) Nó hoạt động. Cảm ơn. –

Trả lời

7

Thêm cuối dòng bằng tay:

output.write('{}\n'.format(json.dumps(author, indent=4))) 

Tôi hy vọng bạn nhận ra rằng kịch bản của bạn sẽ chỉ bao giờ có giá trị id ngoái trong đầu ra; khi bạn ghi đè khóa trong vòng lặp của mình (từ điển không thể có khóa trùng lặp).

Vì vậy, ngay cả khi bạn có 5 id giá trị trong tệp gốc, bạn sẽ chỉ có một giá trị trong dữ liệu kết quả.

9

Đối với Python 3.x, bạn cũng có thể sử dụng print() chức năng, nó sẽ thêm các dòng mới cho bạn, vì vậy thay vì output.write(), bạn sẽ làm gì -

print(json.dumps(author, indent=4),file=output) 

Ví dụ/Demo -

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

file a.txt chứa -

asd 
asd1 
asd2 
-3
put.write(json.dumps("author\n", indent=4)) 
+0

Trong câu hỏi gốc 'tác giả' là một biến, không phải là một chuỗi. – Lukas

Các vấn đề liên quan