栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

写一个字典到txt文件并读回去?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

写一个字典到txt文件并读回去?

您的代码 几乎正确 !没错,您只差一步。当您读入文件时,您将以字符串形式读取它;但是您想将字符串转换成字典。

您看到的错误消息是因为

self.whip
是字符串,而不是字典。

我首先写道,您可以只将字符串输入其中,

dict()
但这不起作用!您需要做其他事情。

这是最简单的方法:将字符串输入

eval()
。像这样:

def reading(self):    s = open('deed.txt', 'r').read()    self.whip = eval(s)

您可以一行完成它,但是我认为这种方式看起来很混乱:

def reading(self):    self.whip = eval(open('deed.txt', 'r').read())

但是

eval()
有时不推荐。问题是,
eval()
它将评估 任何
字符串,如果有人诱骗您运行真正棘手的字符串,则可能会发生不良情况。在这种情况下,您只是
eval()
在自己的文件上运行,所以应该可以。

但是因为

eval()
有用,所以有人选择了一种更安全的替代方法。这称为
literal_eval
,您可以从名为的Python模块中获取该代码
ast

import astdef reading(self):    s = open('deed.txt', 'r').read()    self.whip = ast.literal_eval(s)

ast.literal_eval()
只会评估转换成基本Python类型的字符串,因此,棘手的字符串无法对您的计算机造成不良影响。

编辑

实际上,Python中的最佳实践是使用

with
语句来确保正确关闭文件。重写以上内容以使用以下
with
语句:

import astdef reading(self):    with open('deed.txt', 'r') as f:        s = f.read()        self.whip = ast.literal_eval(s)

在最流行的Python(称为“
CPython”)中,您通常不需要该

with
语句,因为内置的“垃圾收集”功能将确定您已完成文件并会为您关闭文件。但是其他Python实现,例如“
Jython”(用于Java VM的Python)或“
PyPy”(具有即时代码优化的非常酷的实验系统)可能无法为您关闭文件。养成使用的习惯是很好的
with
,而且我认为这使代码很容易理解。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号