python 列表类型错误:'int'对象不可迭代
我写了这个Python代码,但有很多错误,我希望你能帮我检查一下,因为我刚学Python。
for i in range(phones):
pho = int(raw_input( "Phone Number %d : " % (i+1)))
phNums.append(pho)
for name in range(phot):
name1 = '{0}/phone.txt'.format(pathname)
file = open(name1, 'w')
file.write = (pho)
file.close()
第一个问题是,当我运行这个脚本时,出现了这个错误:
Traceback (most recent call last):
file.write = (pho)
AttributeError: 'file' object attribute 'write' is read-only
这个脚本应该完成以下操作: 首先,用户输入前缀的数量和程序的数量。 然后,脚本会计算出“phot”,也就是程序/电话的数量。 接着,用户会输入每个电话号码。 脚本会先取第一个号码,把它写入名为“phone.txt”的文本文件中,文件会放在1、2、3这些文件夹里,直到达到“phot”文件夹的数量,然后再处理下一个号码,继续写入下一个文件夹的数量,依此类推……
请帮我检查一下代码有什么问题。
2 个回答
0
这是一个简单的错误,之前已经有很多人回答过了。所以我不打算直接告诉你答案,而是想带你走一遍我的调试过程。希望这样能在将来节省一些时间。
第一步是检查错误发生的地方:
for name in phNums[i]:
好的,那么错误是什么呢?
TypeError: 'int' object is not iterable
“for”语句会遍历一个可迭代的对象,通常是这样的:
for _item_ in _iterable_
现在我们知道要关注哪一部分代码了。phNums[i]
的类型是什么呢?
phNums
在之前定义为一个列表,但我们想知道的是这个列表里每个项目的类型。看起来这个脚本只有在添加 pho
时才会往列表里加东西,而 pho
是一个整数。
问题就出在这里,你试图遍历一个整数项!现在这个错误就明白了,但我们该怎么修复呢?
注意:我试着往下看,但你的描述不太清楚。你想要的文件夹结构是:
1/phone.txt
2/phone.txt
3/phone.txt
其中 phone.txt
每个文件里都包含一个电话号码?
0
phNums.append(pho)
是把整数添加到你的列表 phNums
中,然后你尝试用 phNums[i]
来遍历这个列表里的每个整数,但这样做是行不通的,所以你会遇到错误。
你可以直接遍历每个元素:
for i in phNums:
name = '{}phone.txt'.format(i) # i is an int so use str.format to concat
或者从你的代码来看,你可能是想遍历一个没有在代码中提供的名字列表。