Python附加到.txt

Python附加到.txt,python,append,Python,Append,嗨,我还在学习python,目前正在尝试将一些数据写入txt文件。我在添加超过1个人的详细信息时遇到问题。我可以添加第一个人的详细信息,并且效果很好,但是当我选择添加另一个人的详细信息集时,会出现以下错误 line 58, in <module> datalist.append(first) AttributeError: 'map' object has no attribute 'append' 这里有一些问题 正如Patrick Haugh在上面指出的,map()返回

嗨,我还在学习python,目前正在尝试将一些数据写入txt文件。我在添加超过1个人的详细信息时遇到问题。我可以添加第一个人的详细信息,并且效果很好,但是当我选择添加另一个人的详细信息集时,会出现以下错误

line 58, in <module>
    datalist.append(first)
AttributeError: 'map' object has no attribute 'append'

这里有一些问题

正如Patrick Haugh在上面指出的,
map()
返回一个映射,而不是一个列表,因此没有
.append()
方法。您可以通过转换他提到的列表中的map对象来解决这个问题:
datalist=list(map(str,datalist))

还有一个事实是Python列表没有
.count
属性。相反,您可能想知道列表的长度,因此只需执行
打印(len(datalist))

最后,还有一个逻辑错误:您需要在外部
while
循环的末尾为每个学生写一行,或者收集所有收集的学生并立即将其写出。前者要简单得多。只需将
datalist
变量的清除移到循环内部的顶部,而不是之前。还请注意,由于您正在使用
moredata=moredata.upper()
和循环的底部规范化大小写,因此不需要在顶部同时检查这两种情况

while (moredata=="Y"):
    datalist=[]
...

在Python3中,map不返回列表,它返回一个
map
对象。执行
datalist=list(map(str,datalist))
将数据放入列表。在将其内容写入数据文件后,是否仍要重置
datalist
?谢谢。我想继续将每个人添加到一个不相关的新行:
gender=input(“enter gender”).upper()
group=min(int(input(“enter age”))-10,4)
(但要小心输入错误并检查[1,2,3,4]中的组)如果不重置
数据列表
,则每一行将由它前面的每一行组成。
datalist=[]
应该是
行之后的第一行,而不是它前面的行。
while (moredata=="Y"):
    datalist=[]
...