我编写了一个小型Web应用程序,每次请求都应该打开并读取JSON文件.我为此目的使用pickledb.我关心的是,库open()作为json.load()函数的参数传递.所以它让我思考..
当我写这样的代码时:
with open("filename.json", "rb") as json_data:
my_data = json.load(json_data)
Run Code Online (Sandbox Code Playgroud)
要么
json_data = open("filename.json", "rb")
my_data = json.load(json_data)
json_data.close()
Run Code Online (Sandbox Code Playgroud)
我很确定文件句柄正在关闭.
但是当我以这种方式打开它时:
my_data = json.load(open("filename.json", "rb"))
Run Code Online (Sandbox Code Playgroud)
的文档说,json.load()期待一个.read() -支撑含JSON文档类文件对象.
所以问题是,这个句柄是否会保持开放并且每次请求都会占用更多内存?在这种情况下谁负责关闭手柄?
当对象被销毁时,将调用文件的 Close 方法,因为 json.load 只期望输入对象上的 read 方法。
发生什么取决于垃圾收集的实现。您可以在显式关闭文件重要吗?中阅读更多内容。
一般来说,关闭文件是一个很好的做法。
| 归档时间: |
|
| 查看次数: |
2321 次 |
| 最近记录: |