我有一个要导入的文本文件作为在此for-while循环中使用的列表:
text_file = open("/Users/abc/test.txt", "r")
list1 = text_file.readlines
list2=[]
for item in list1:
number=0
while number < 5:
list2.append(str(item)+str(number))
number = number + 1
print list2
但是当我运行它时,它会输出:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is not iterable
我该怎么办?
答案 0 :(得分:5)
readlines()
是一种方法,请将其命名为:
list1 = text_file.readlines()
此外,不是将整个文件加载到python列表中,而是逐行迭代文件对象。 use with context manager:
with open("/Users/abc/test.txt", "r") as f:
list2 = []
for item in f:
number = 0
while number < 5:
list2.append(item + str(number))
number += 1
print list2
另请注意,您无需在str()
上致电item
,您可以使用+=
来增加number
。
此外,您可以进一步简化代码并使用嵌套循环list comprehension:
with open("/Users/abc/test.txt", "r") as f:
print [item.strip() + str(number)
for item in f
for number in xrange(5)]
希望有所帮助。
答案 1 :(得分:0)
列表理解为您提供帮助:
print [y[1]+str(y[0]) for y in list(enumerate([x.strip() for x in open("/Users/abc/test.txt","r")]))]