簡體   English   中英

將對象轉儲到JSON文件的兩種方式之間有什么區別嗎?

[英]Is there any difference between the two ways to dump an object to a JSON file?

方法1:

json.dump(object, file('object.json', 'w'))

方法2:

f = file('object.json', 'w')
json.dump(object, f)
f.close()

我經常使用方法2將對象轉儲到json文件中,但是看起來很丑。 方法1看起來很清晰,但我為打開文件對象作為參數是否正確感到困惑,在將對象存儲在JSON文件中之后,誰將控制該對象?

我是否為打開文件對象作為參數感到困惑,在將對象存儲在json文件中之后,誰將控制該對象?

沒有人控制。 在方法1的json.dump調用中創建的file在該行之后離開作用域,因此被隱式關閉。 因此,這兩種方法是等效的。

如果您想更詳細些,我建議使用上下文管理器

with file('object.json', 'w') as f:
    json.dump(object, f)

這樣可以確保始終在塊末尾正確關閉文件,即使在發生錯誤時將控制權傳遞給任何異常處理程序也是如此。

我會說沒有太大差別,但是,第二方法可以考慮從可讀性的角度更好; 可讀性很重要。

在您的示例中,用於打開文件的文件名和模式是硬編碼的字符串。 如果它們都是變量名(在現實世界中很可能是變量名),我覺得方法#1在閱讀時會更難解析。

另一個觀察結果是,使用方法1,您將無法繼續寫入該文件對象,因為您沒有引用它的變量。 您將需要重新打開它以附加更多數據。

它們在內部是相同的,您可以檢查源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM