我目前正在学习python编程(并且是一个初学者)目前我被困在文件练习(所以这些是我需要做的设定的事情,而不是做任何我想做的事情)。不幸的是,这也意味着我可能不能做任何复杂的(对我来说)捷径)
当前正在使用Python3.2.2
我需要两个不同的节目一种是输入用户输入的内容(一个名称和一个DOB),并将其放入列表中的记录中,然后将其写入二进制文件另一种方法是读取该文件并使用padding将其打印到表中。
代码:
弗斯特
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()
第二:
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'
在
people = pickle.load(myfile)
不幸的是,当我在其他问题上寻找答案时,要么没有一个解决方案起作用,要么不适用于我,要么大部分只是在我脑子里胡思乱想。
我做错什么了?
提前谢谢你的帮助。
最佳答案
pickle加载文件时,它试图创建newperson
实例,但newperson
未在第二个程序中定义为了解决这个问题,您可以创建一个新文件newperson.py
只包含类'newperson.py'的定义``
# newperson.py
class newperson():
def __init__(self):
self.name = ""
self.dob = ""
在这两个程序中,在导入或pickle之后导入类:
from newperson import newperson
或者,您可以使用字典而不是
newperson
类。关于python - AttributeError:'模块'对象没有属性'newperson',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9127714/