为什么这段代码(Python)只返回一行?

时间:2017-03-31 15:47:59

标签: python file

我最近开始编程,我想对文件进行排序,但最后,这段代码只返回一行,即使文本文件有65行......

f = open(".\\test.txt")
g, u = [], []
a = 0


for i, line in enumerate(f):
    a += 1
    if i%2 == 0:
        g.append(f.readlines()[i])
        print(i),
    elif i%2 == 1:
        u.append(f.readlines()[i])
        print(i),


print(u),
print(g)

3 个答案:

答案 0 :(得分:0)

你必须做

lines = f.readlines()
for i, line in enumerate(lines):
    a += 1
    if i%2 == 0:
        g.append(lines[i])
        print(i),
    elif i%2 == 1:
        u.append(lines[i])
        print(i),

答案 1 :(得分:0)

open(filename)为您提供了一个文件行的迭代器。读完所有行一次后,此迭代器将耗尽,因此在第一行之后对readlines的任何后续调用将为您提供一个空列表。

演示:

>>> with open('testfile.txt') as f:
...     a = f.readlines()
...     b = f.readlines()
...     a
...     b
... 
['hello\n', 'stack\n', 'overflow\n']
[]

答案 2 :(得分:0)

您的for循环开始逐行读取文件。但随后它的内容将在一次readlines调用中读取文件的其余部分;在那之后,没有什么可读的了!因此,您最终得到line中的第一行和g中的第二行,因为您只保留了readlines()读取的其中一行。