【发布时间】:2021-02-21 07:11:54
【问题描述】:
infile = open("inputex1.txt","r")
line = infile.readline()
print("1 "+line, end="")
i = 2
while line !="" :
line = infile.readline()
print(str(i)+" "+line, end="")
i+=1
infile.close()
文本文件是:
Mary had a little lamb,
whose fleece was white as snow.
And everyWhere that Mary went,
The Lamb was sure to go
然而输出是:
1 Mary had a little lamb,
2 whose fleece was white as snow.
3 And everyWhere that Mary went,
4 The Lamb was sur to go
5
我的问题是,为什么它到达第五行后一直进入while循环?为什么最后是5?
【问题讨论】:
-
因为你在最后一行之后又读了一行,这将导致一个空字符串。或者换一种说法,因为您在打印之后检查该行是否为空。
-
mkrieger 确定了您的代码的问题,但请注意,您不应该使用这种方法来逐行迭代文件,文件对象是行上的迭代器 你可以直接遍历它们:
for line in infile: ...基本上,readline和readlines是 Python 非常旧版本的遗物。在专业环境中编写 Python 的四年中,我使用它们的次数恰好为零。您可以分别使用next(infile)和list(infile)。通常,您只需直接遍历文件对象以进行一些逐行处理
标签: python