如何迭代到文件结尾

时间:2018-01-08 08:56:16

标签: python

我希望以下代码读取此现有文本文件。

["Jenny", "Carlos", "Matty", "Anna"]

我如何写一些好的东西来获得这个输出。

["0 Jenny", "1 Carlos", "2 Matty", "3 Anna"]

这就是我到目前为止......

champions = []
n = 0
winners = open("victory.txt","r")
while True:
    champions[n] = winners.readline()
    n = n + 1
print(champions)

3 个答案:

答案 0 :(得分:0)

champions = [champion.strip() for champion in open("victory.txt")]

答案 1 :(得分:0)

这可能是解决问题的一种方法:

i = 0
with (open('myFile.txt', 'r')) as data:
    for line in data:
        print str(i) + ' ' + line.rstrip()
        i += 1

说明:

i = 0

初始化rowcount的计数器

with (open('myFile.txt', 'r')) as data:

以读取模式打开我们的文件,将每个文件放入一个名为“data”的数组中。

for line in data:
    print str(i) + ' ' + line.rstrip()
    i += 1

现在你遍历数组的每个元素,它的值存储在行中。打印行调用我们的countervariable,添加一个空格,从文件中放入行。 .rstrip()会像换行一样削减一些垃圾。

注意:这个是基于我的opion建立你的文件的样子。您应该“准确地”发布您的文件包含的内容。

坦克到@Guy他的提议使代码更简单易懂:

with (open('test', 'r')) as data:
    for counter,val in enumerate(data):
        print (str(counter) + ' ' + val.rstrip())

答案 2 :(得分:0)

只需打印行号:

with open('victory.txt') as f_input:
    for index, row in enumerate(f_input):
        print('{} {}'.format(index, row), end='')

如果要对现有文件进行更改,则需要分两个阶段进行,即读入,关闭文件,写出更新的值,例如:

with open('victory.txt') as f_input:
    data = f_input.read().splitlines()

with open('victory.txt', 'w') as f_output:
    for index, row in enumerate(data):
        f_output.write('{} {}\n'.format(index, row))

假设您的输入文件是:

Jenny
Carlos
Matty
Anna

您将获得更新的输出文件:

0 Jenny
1 Carlos
2 Matty
3 Anna

enumerate()用于为每行提供一个计数器。如果您希望从1启动计数器,则可以添加start=1

使用

end='',因为从文件读入的每一行都已包含尾随换行符。使用print()也会添加换行符,因此您需要删除尾随换行符或在打印时停止Python添加换行符。