我目前正在学习 python 编程(并且是初学者)。目前我陷入了文件练习(所以这些是我需要做的设定事情,而不是做我想做的任何事情。不幸的是,这也意味着我可能无法做任何复杂的(对我来说)快捷方式)
目前使用Python 3.2.2
我需要两个不同的程序。一种是输入用户输入的内容(姓名和出生日期)并将其放入列表中的记录中,然后将其写入二进制文件。另一种方法是读取该文件并使用填充将其打印到表格中。
Codes:
First
import pickle
class newperson():
def __init__(self):
self.name = ""
self.dob = ""
stop = False
people = []
print("When you want to stop just hit enter")
count = 0
while stop == False:
name = input("Please Enter the name: ")
if len(name) == 0:
stop = True
else:
people.append(newperson())
people[count].name = name
people[count].dob = input("Please enter their DOB: ")
count = count + 1
file = open("ex9.4.dat", "wb")
pickle.dump(people,file)
file.close()
Second:
import pickle
myfile = open("ex9.4.dat", "rb")
people = pickle.load(myfile)
print("{0:<15}{1}".format("Name","DOB"))
for item in people:
print("{0:<15}{1}".format(item.name,item.dob))
问题是我在尝试运行第二个程序时收到以下错误:
AttributeError: 'module' object has no attribute 'newperson'
on
people = pickle.load(myfile)
不幸的是,当我寻找其他问题的答案时,要么没有一个解决方案有效,要么不适用于我,要么大部分都超出了我的理解范围。
我究竟做错了什么?
先谢谢您的帮助。
当 pickle 加载它尝试创建的文件时newperson
实例,但是newperson
未在第二个程序中定义。要解决该问题,您可以创建一个新文件newperson.py
仅包含类“newperson.py”的定义
# newperson.py
class newperson():
def __init__(self):
self.name = ""
self.dob = ""
在这两个程序中,在 import 或 pickle 之后导入类:
from newperson import newperson
或者,您可以使用字典代替newperson
class.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)