我正在尝试将字典写到txt文件。然后使用键入键,以读取dict值raw_input
。我感觉好像只想走一步,但现在已经找了一段时间。
我得到这个错误
File "name.py", line 24, in reading
print whip[name]
TypeError: string indices must be integers, not str
我的代码:
#!/usr/bin/env python
from sys import exit
class Person(object):
def __init__(self):
self.name = ""
self.address = ""
self.phone = ""
self.age = ""
self.whip = {}
def writing(self):
self.whip[p.name] = p.age, p.address, p.phone
target = open('deed.txt', 'a')
target.write(str(self.whip))
print self.whip
def reading(self):
self.whip = open('deed.txt', 'r').read()
name = raw_input("> ")
if name in self.whip:
print self.whip[name]
p = Person()
while True:
print "Type:\n\t*read to read data base\n\t*write to write to data base\n\t*exit to exit"
action = raw_input("\n> ")
if "write" in action:
p.name = raw_input("Name?\n> ")
p.phone = raw_input("Phone Number?\n> ")
p.age = raw_input("Age?\n> ")
p.address = raw_input("Address?\n>")
p.writing()
elif "read" in action:
p.reading()
elif "exit" in action:
exit(0)
您的代码 几乎正确 !没错,您只差一步。当您读入文件时,您将以字符串形式读取它;但是您想将字符串转换成字典。
您看到的错误消息是因为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 ast
def reading(self):
s = open('deed.txt', 'r').read()
self.whip = ast.literal_eval(s)
ast.literal_eval()
只会评估转换成基本Python类型的字符串,因此,棘手的字符串无法对您的计算机造成不良影响。
实际上,Python中的最佳实践是使用with
语句来确保正确关闭文件。重写以上内容以使用以下with
语句:
import ast
def 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
,而且我认为这使代码很容易理解。
我希望有人会花时间帮助我。我是Java新手,正在上一堂课尝试学习它。我有一个任务,我已经开始和删除了可能30次。我就是不喜欢这个。作业如下: 从txt文件中读取3列整数。一列有学生号,一列是作业的分数,第三列是作业的最大可能分数。(各10分学生5人)。 我必须至少使用1个数组。 列出从作业中获得的总分数,并合计5名学生在10项作业中每个人可能获得的最高分数。然后将学生号、分数、作业的最大可能分数、
本文向大家介绍python读文件保存到字典,修改字典并写入新文件的实例,包括了python读文件保存到字典,修改字典并写入新文件的实例的使用技巧和注意事项,需要的朋友参考一下 实例如下所示: 以上这篇python读文件保存到字典,修改字典并写入新文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍C++中读写txt文件并分离字符的方法,包括了C++中读写txt文件并分离字符的方法的使用技巧和注意事项,需要的朋友参考一下 在实际工程中,经常遇到需要读取txt文件,txt文件中存的是一些小数或者整型数据,在C++中,可以利用string类和ifstream库文件对txt进行的读取,不过读回的数据经常是以字符串的形式返回,一般是txt的一行为一个字符串返回。那么如何从字符串中分离出
问题内容: 我打开 记事本 (Windows)并编写 并转到“ 另存为… ”“ someFile.txt”,并将“ 编码” 设置为 UTF-8 。 在Java中,我有 但是我得到问号和类似的“特殊”字符。为什么? 编辑: 我有此输入(.txt文件中的一行) 和这段代码 和 吐司 输出(用于那些谁不熟悉与Android,吐司只是一个显示弹出式屏幕,在它特定的文本法)的罚款。控制台显示“奇怪的字符”(
本文向大家介绍Python txt文件加入字典并查询的方法,包括了Python txt文件加入字典并查询的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Python txt文件加入字典并查询的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍Java读取txt文件和写入txt文件的简单实例,包括了Java读取txt文件和写入txt文件的简单实例的使用技巧和注意事项,需要的朋友参考一下 写Java程序时经常碰到要读如txt或写入txt文件的情况,但是由于要定义好多变量,经常记不住,每次都要查,特此整理一下,简单易用,方便好懂! 以上这篇Java读取txt文件和写入txt文件的简单实例就是小编分享给大家的全部内容了,希望能给