python - 使用Python将JSON从文件加载到字典的方法?

标签 python json

我使用 Python 从文本文件加载 JSON 并将其转换为字典。我想到了两种方法,想知道哪种方法更好。

最初我打开文本文件,加载 JSON,然后关闭文本文件。

import json

// Open file. Load as JSON.
data_file = open(file="fighter_data.txt", mode="r")
fighter_match_data = json.load(data_file)
data_file.close()

我可以改为执行以下操作吗?

import json

// Open file. Load as JSON.
fighter_match_data = json.load(open(file="fighter_data.txt", mode="r"))

我还需要关闭文件吗?如果是这样,怎么办?如果没有,Python 会自动关闭文件吗?

最佳答案

个人也不会这样做。打开文件的最佳实践通常是使用 with

with open(file="fighter_data.txt", mode="r") as data_file:
    fighter_match_data = json.load(data_file)

这样,当您退出 with 语句时,它会自动关闭。它比第一个短,如果它抛出错误(例如,解析 json 时出错),它仍然会关闭它。

<小时/>

关于您的实际问题,需要关闭一行中的文件。

根据我对文件处理和垃圾收集的了解,如果您使用 CPython,由于该文件不再被引用,因此垃圾收集器“应该”立即关闭它。然而,依靠垃圾收集来为您完成工作从来都不是编写代码的最好方式。 (有关原因的信息,请参阅 open read and close a file in 1 line of code 的答案)。

关于python - 使用Python将JSON从文件加载到字典的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49166307/

相关文章:

python - 枚举二进制变量值的所有可能组合

javascript - getJSON 覆盖 HTML 背景颜色

java - 如何使用 Jackson 递归地修改 JsonNode 的值

json - 如何用rjson强制将字符编码为数组?

php - 使用 PHP/MySQL 构建更多维的 JSON 对象

python - SqlAlchemy 完整性错误

python - 在 Pandas 的前几行中获取第一个非零值

Python 颜色/格式在 pyinstaller 中不起作用

c++ - rapidjson 提取键和值

python - 将 QMimeData 粘贴到另一个窗口的 QTextEdit