Python 试图将输入插入文件,但具有'';非类型';“对象不可编辑”;错误';

Python 试图将输入插入文件,但具有'';非类型';“对象不可编辑”;错误';,python,Python,我试图从用户那里获取一个输入,并将该输入放在文件的正确位置 以下是我到目前为止所做的工作(Names.txt有一个按字母顺序排列的名字列表,我不想要任何重复的名字,所以我将列表转换为set) 但每当我输入q以外的东西时,我就会遇到问题 Traceback (most recent call last): File "C:\Users\SKKU\Desktop\1.py", line 12, in <module> main() File "C:\Users\SKKU\D

我试图从用户那里获取一个输入,并将该输入放在文件的正确位置

以下是我到目前为止所做的工作(Names.txt有一个按字母顺序排列的名字列表,我不想要任何重复的名字,所以我将列表转换为set)

但每当我输入q以外的东西时,我就会遇到问题

Traceback (most recent call last):
  File "C:\Users\SKKU\Desktop\1.py", line 12, in <module>
    main()
 File "C:\Users\SKKU\Desktop\1.py", line 8, in main
    outfile.writelines(list1)
TypeError: 'NoneType' object is not iterable
回溯(最近一次呼叫最后一次):
文件“C:\Users\SKKU\Desktop\1.py”,第12行,在
main()
文件“C:\Users\SKKU\Desktop\1.py”,第8行,主目录
outfile.writelines(列表1)
TypeError:“非类型”对象不可编辑
我该怎么办?
我做得对吗?

向列表中添加名称的行应该是:

list1.append(name1)
因为
append
修改现有列表,并且不返回任何内容(即返回
None


因此,您使用
list1=list1.append(name1)
list1
设置为
None
。然后您将
None
传递到
outfile.writelines
,它试图迭代您传递的内容,当然,这对
None

没有意义将名称添加到列表中的行应该是:

list1.append(name1)
因为
append
修改现有列表,并且不返回任何内容(即返回
None


因此,您使用
list1=list1.append(name1)
list1
设置为
None
。然后您将
None
传递给
outfile.writelines
,它试图迭代您传递的内容,当然,这对
None
没有意义另一个指针,声明name1=0没有用

    name1 = 0   #you can remove this
    name1 = input("Enter a name, if you want to quit, enter q: ")
    while name1 != "q":
        list1 = list1.append(name1)
        outfile.writelines(list1)
此外,while循环正在无限期地向文件中写入行

您指示您的程序将name1附加到列表中,然后像@Blorgbeard所说的那样在文件中写入一些没有意义的内容 因此,您可能需要在代码中重写/删除一些内容

您可能想考虑在列表操作()上读取一点,并使用for循环:

list = [#items]
for item in list: #instead of a while loop
#do something 
    print item

另一个指针,声明name1=0是没有用的

    name1 = 0   #you can remove this
    name1 = input("Enter a name, if you want to quit, enter q: ")
    while name1 != "q":
        list1 = list1.append(name1)
        outfile.writelines(list1)
此外,while循环正在无限期地向文件中写入行

您指示您的程序将name1附加到列表中,然后像@Blorgbeard所说的那样在文件中写入一些没有意义的内容 因此,您可能需要在代码中重写/删除一些内容

您可能想考虑在列表操作()上读取一点,并使用for循环:

list = [#items]
for item in list: #instead of a while loop
#do something 
    print item
提示:
list1.append(…)
返回无。提示:
list1.append(…)
返回无。