[英]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.