python list TypeError:'int'对象不可迭代

时间:2014-10-20 00:58:41

标签: python list file loops

我在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

脚本应该执行以下方案: 首先,用户给出Perfix的数量和prog的计数 该脚本将计算它与prog / phone的照片 然后用户将给出每个电话号码 该脚本将获取第一个数字并将其写入文本文件" phone.txt"在文件夹1 2 3上直到达到文件夹的数量计数然后移动到下一个数字并继续写入下一个文件夹数...等等

请检查代码的问题是什么

2 个答案:

答案 0 :(得分:0)

phNums.append(pho)在您的列表phNums中添加了一些内容,然后尝试迭代phNums[i],这是列表中您不能做的每个int以及您收到错误的原因。

直接迭代每个元素:

for i in phNums:
    name = '{}phone.txt'.format(i) # i is an int so use str.format to concat

或者查看您的代码,您可能想要迭代代码中未提供的名称列表。

答案 1 :(得分:0)

这是一个已经得到充分回答的简单错误,因此我想指导您完成调试过程,而不是直接回答。希望这将节省未来的时间。

第一步是检查错误发生的位置:

for name in phNums[i]:

好的,现在出现了什么错误?

TypeError: 'int' object is not iterable

“for”语句将迭代给定的iterable,通常是这样的:

for _item_ in _iterable_

现在我们知道该行的哪一部分。什么类型phNums[i]phNums先前已定义为列表,但使用phNums[i]时,我们希望找到该列表中项目的类型。似乎脚本添加到列表的唯一时间是附加pho,这是一个int。

有问题,你正试图迭代一个int项!错误现在有意义,但我们应该如何解决呢?

注意:我尝试了进一步,但你的描述不清楚。您希望文件夹结构为:

1/phone.txt
2/phone.txt
3/phone.txt

其中phone.txt是否包含每个电话号码?