2013-06-11 34 views
36

Mã của tôi tạo từ điển, sau đó được lưu trữ trong một biến. Tôi muốn viết từng từ điển vào một tệp JSON, nhưng tôi muốn mỗi từ điển trên một dòng mới.Kết xuất JSON Python/nối thêm .txt với mỗi biến trên dòng mới

từ điển của tôi:

hostDict = {"key1": "val1", "key2": "val2", "key3": {"sub_key1": "sub_val2", "sub_key2": "sub_val2", "sub_key3": "sub_val3"}, "key4": "val4"} 

Một phần của mã của tôi:

g = open('data.txt', 'a') 
with g as outfile: 
    json.dump(hostDict, outfile) 

này nối mỗi từ điển để 'data.txt' nhưng nó làm như vậy inline. Tôi muốn mỗi mục nhập từ điển nằm trên dòng mới. Mọi lời khuyên sẽ được đánh giá cao.

Trả lời

63

Câu hỏi của bạn có một chút không rõ ràng. Nếu bạn đang tạo hostDict trong một vòng lặp:

with open('data.txt', 'a') as outfile: 
    for hostDict in ....: 
     json.dump(hostDict, outfile) 
     outfile.write('\n') 

Nếu bạn có nghĩa là bạn muốn mỗi biến trong hostDict được trên một dòng mới:

with open('data.txt', 'a') as outfile: 
    json.dump(hostDict, outfile, indent=2) 

Khi đối số indent từ khóa được thiết lập nó sẽ tự động thêm dòng mới.

+0

Điều đó đã làm điều đó, cảm ơn bạn! –

+2

Những gì tôi cần là giải pháp đầu tiên, nơi mà mỗi dict là trên dòng mới. Cảm ơn một lần nữa. Tài liệu –

+0

có tại đây: https://docs.python.org/2/library/json.html#basic-usage – badgley