2014-10-20 143 views
0

我在做这个蟒蛇代码,但它有我希望你能查一下,因为我在蟒蛇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 

脚本应该做这样的场景: 首先,用户给Perfixes的数量和progs的的计数 该脚本将计算辐透它的progs的/电话 然后用户将给每个电话号码 脚本将采取第一个号码,并将其写入文件夹1 2 3的文本文件“phone.txt”,直到达到文件夹的光照计数,然后移动到下一个号码,并继续写入下一个计数文件夹...等

请检查什么是用代码

+0

'在phNums [i]中改名':'为'名为phINN:' – 101 2014-10-20 01:01:05

+0

'file.write'是一个函数(技术上,'write'是'file'对象的一个​​方法),所以你称之为'file.write('some text')'将字符串'some text'写入文件。但是'file.write =(pho)'试图用'pho'中发生的任何事情来代替这个方法,在这种情况下是'int'。而'file'对象足够聪明,不会让你这样做。顺便说一句,使用'file'作为你自己的变量的名字不是一个好主意,因为它是一个标准类的名字。 – 2014-10-20 02:46:17

回答

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 

还是看你的代码,您可能意味着遍历是不是在你的代码中提供的名单。

+0

错误已经消失但出现此错误TypeError:不支持的操作数类型为+ =:'int'和'str' – 2014-10-20 01:06:20

+0

我是一个int,因此您必须将其转换为字符串或使用str.format,就像我的示例 – 2014-10-20 01:08:54

0

这是一个已经被充分回答的简单错误,所以不是给你一个直接的答案,我想指导你完成我的调试过程。希望这会在未来节省时间。

第一步是检查哪里出现了错误:

for name in phNums[i]: 

好了,现在究竟是什么错误?

TypeError: 'int' object is not iterable 

的“for”语句将遍历一个给定的迭代并且通常是这样的:

for _item_ in _iterable_ 

现在我们知道看该线的一部分。什么类型是phNums[i]phNums在前面定义为一个列表,但是phNums[i]我们想要找到该列表中的项目的类型。看起来,脚本添加到列表的唯一时间是追加pho,这是一个int。

有这个问题,你试图遍历一个int项目!这个错误现在有意义,但我们应该如何解决它?

笔记:我试着走得更远,但您的描述不清楚。你想要的文件夹结构为:

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

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

+0

是这是结构,例如,如果用户输入了这些值(progs = 3,phones = 3,ph 1 = 00,ph2 = 01,ph3 = 02),则phot将为3/3 = 1,因此脚本会复制ph1并粘贴到1/phone.txt中,然后将ph2复制到2/phone.txt。这就是主意 – 2014-10-20 01:22:21

+0

这对我来说仍然没有意义。你打算用“phot”做什么?它在你的代码中完全没有用。 – Landon 2014-10-20 01:28:30

+0

你可能遇到的另一个问题是,你需要在写入文件之前创建目录,'open'不会创建一个目录并打开一个文件(有关创建目录的信息,请参阅“os.mkdir”和“os.makedirs” )。如果您在运行脚本之前创建了所有目录,则这可能不是问题。 – Landon 2014-10-20 01:30:01

相关问题