繁体   English   中英

readline与for循环问题

[英]readline with for loop issue

我有一个.txt文件,其中包含10行文本排序(每行三个逗号分隔的单词),但是以下内容仅读取文本文件中的四行:

def main():
    path = '/path/to/file.txt'
    f  = open(path, 'r')
    for line in f:
        s = f.readline()
        print(s)
    f.close
main()

但这会将所有行读入一个列表中:

def main():
    path = '/path/to/file.txt'
    f  = open(path, 'r')
    s = f.readlines()
    print(s)
    f.close
main()

为什么for循环不起作用?

for line in f您已经在读取一行。 因此,执行readline()毫无用处,因为它将读取下一行,这解释了为什么读取4行而不是10行。

当您打开file.txt时,您将获得一个_io.TextIOWrapper对象作为f。

for line in f:将迭代的f迭代器线以获得你的文件的每一行先后,线,进入你的line变量。 您可以在此处查看迭代器的工作方式。

f迭代你的循环开始后移动一行,你看了另一条线与s = f.readline()和提前移动你的迭代下一行。 当您结束第一个循环时,将for line in f:for line in f:读取f的另一行for line in f:然后,通过读取s = f.readline()的下一行来跳过该行。

您的代码将与

def main():
    path = '/path/to/file.txt'
    with open(path, 'r') as f:
        for line in f:
            print(line)

main()

这将使所有行起作用:

with open('/path/to/file.txt') as fp:
    for line in fp.read().split('/n'):
        print(line)

for line in f:中的行,已经在文件中的行上进行了迭代,然后您尝试在该迭代中read一行。 只需使用line的值而忽略s

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM