2012-12-05 42 views
0

說我想用Json將多個變量轉儲到磁盤。他們的方式,我通常做,這是通過創建我的變量字典中的條目,然後傾倒字典盤:在Json中將多個變量轉儲到磁盤。每行一個變量

with open(p_out, 'wb') as fp: 
    json.dump(my_dictionary, fp) 

這產生了字典被保存在一個長線JSON文件:

{"variable_1": something, "variable_2" something_else, ...} 

我不喜歡。我寧願我的變量沿着這些線路轉儲到文本文件,每行一個變量,e.g東西:

{variable_1: something\n 
variable_2: something\n 
variable_3: something_else} 

有沒有辦法在Python使用JSON做到這一點?

+0

假設你有字典'{ 'variable_1': '東西'}',你想輸出文件包含' 「variable_1」:「某事「或」變量1:某事「。沒有引號,它不是JSON。 –

回答

3

設置indent選項0或多個:

with open(p_out, 'wb') as fp: 
    json.dump(my_dictionary, fp, indent=0) 

documentation

如果縮進是一個非負整數,則JSON數組元素和對象成員將用縮進級別漂亮地印刷。縮進級別0或負數只會插入換行符。 None(默認)選擇最緊湊的表示法。

你的例子是輸出:

{ 
"variable_2": "something_else", 
"variable_1": "something" 
} 
+0

謝謝,但是這也會在每個對象中插入新行(例如,如果'variable_1'是一個列表,它也會在列表中每對項之間插入新行)。有沒有辦法只在變量之間添加新行? –

+1

@ user273158:不,沒有。您必須使用'.dumps()'將其轉儲爲字符串,然後在將結果寫入文件之前進行後處理。 –