Python 如何关闭使用ast.literal\u eval打开的文件?
我的程序使用了很多外部文件。大多数情况下,这些文件只包含一个字典。目前,我正在打开如下文件:Python 如何关闭使用ast.literal\u eval打开的文件?,python,file,Python,File,我的程序使用了很多外部文件。大多数情况下,这些文件只包含一个字典。目前,我正在打开如下文件: userdata = ast.literal_eval(open("./users.txt", "r").read()) open("./users.txt", "w").write(str(userdata)) 这将字典保存到变量userdata中。现在,我可以稍微更改这些值,然后像这样重新编写字典: userdata = ast.literal_eval(open("./users.txt",
userdata = ast.literal_eval(open("./users.txt", "r").read())
open("./users.txt", "w").write(str(userdata))
这将字典保存到变量userdata中。现在,我可以稍微更改这些值,然后像这样重新编写字典:
userdata = ast.literal_eval(open("./users.txt", "r").read())
open("./users.txt", "w").write(str(userdata))
显然,我不能用userdata.close关闭文件,因为userdata不是一个文件对象,而只是一个字典。如何关闭这些文件或它们是否自行关闭
该文件可以汇总为只包含以下字符串:{'name':'User1','money':50}
(实际上会有多个用户和多个键)使用上下文管理器功能打开文件,即带有
关键字的。这样可以确保在上下文管理器的作用域结束时始终关闭文件
阅读时请使用:
with open("./users.txt", "r") as f:
userdata = ast.literal_eval(f.read())
with open("./users.txt", "w") as f:
f.write(str(userdata))
并使用以下方法编写:
with open("./users.txt", "r") as f:
userdata = ast.literal_eval(f.read())
with open("./users.txt", "w") as f:
f.write(str(userdata))
使用上下文管理器功能打开文件,即带有
关键字的。这样可以确保在上下文管理器的作用域结束时始终关闭文件
阅读时请使用:
with open("./users.txt", "r") as f:
userdata = ast.literal_eval(f.read())
with open("./users.txt", "w") as f:
f.write(str(userdata))
并使用以下方法编写:
with open("./users.txt", "r") as f:
userdata = ast.literal_eval(f.read())
with open("./users.txt", "w") as f:
f.write(str(userdata))
为什么不在literal\u eval
之前调用open
,这样您就可以访问文件对象了?和/或将对literal\u eval
的调用用包装起来。您能提供一个示例吗?你的意思是带ast.literal的userdata=open(“./users.txt”,“r”)和ast.literal\u eval
No.f=open(…);userdata=ast.literal_eval(f.read());f、 close()
,或者理想情况下,答案中显示的与的方式。为什么不在文本评估之前调用打开,这样您就可以访问文件对象了?和/或将对literal\u eval
的调用用包装起来。您能提供一个示例吗?你的意思是带ast.literal的userdata=open(“./users.txt”,“r”)和ast.literal\u eval
No.f=open(…);userdata=ast.literal_eval(f.read());f、 close()
,或者,理想情况下,使用答案中显示的和的方式。