Python将文本文件作为列表进行迭代

时间:2014-03-27 03:44:55

标签: python list import text-files

我有一个要导入的文本文件作为在此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

我该怎么办?

2 个答案:

答案 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")]))]