我一直在测试文本文件中的读取行,最后让我的程序正确执行。但我不确定为什么while
循环退出执行。
filepath = 'LastQuizPlan.txt'
with open(filepath) as fp:
line = fp.readline()
count = 1
while line:
print(line.strip)
line=fp.readline()
count+=1
我在http://stackabuse.com/read-a-file-line-by-line-in-python/在线发现了代码,稍微操纵了一下,它运行正常,但我需要为它创建一个写入,并且不知道while line:
是如何工作的?它完全按照我想要的方式工作,但我不明白它的表达方式。
我一直在使用以下声明来试图解决这个问题
while expression:
statement(s)
但仍然只是不理解表达式?为什么它会自动知道当count超出" LastQuizPlan.txt"中的行范围时,停止循环。
这里也是" LastQuizPlan.txt"的内容。 Unit 1 Electrical stuff 12/06/17
答案 0 :(得分:0)
因此,如果我们转到Python
readline
readline
,我们会发现以下内容:
f.readline()从文件中读取一行;换行符 (\ n)留在字符串的末尾,仅在最后一个省略 文件的行,如果文件没有以换行符结尾。这使得 返回值明确; 如果f.readline()返回一个空字符串,则为 已达到文件末尾,而空白行表示为 ' \ n',一个只包含一个换行符的字符串。
如果我们转到另一篇关于documentation的文档,我们会发现:
可以测试任何对象的真值,以便在if或while中使用 条件或下面的布尔运算的操作数。下列 值被视为错误:
无
假
任何数字类型的零,例如,0,0L,0.0,0j。
任何空序列,例如'',(),[]。
因此,结合这两个项目,我们可以解决问题。
当有要读取的行时, while
会一直返回非空字符串。当它到达EOF时,它返回一个空字符串。当while ''
循环检查以下条件时:''
,它将空字符串False
视为while '':
print("Hello")
值,并结束循环的执行。
你可以看到这并没有使用快速Python语句执行任何操作:
while
执行时,这将不会打印任何内容,因为# Switching to searh iFrame
MAINBROWSER.switch_to.frame(MAINBROWSER.find_element_by_xpath('.//*[@id="IWEB_IFRAME_ID_SEARCH"]'))
# no input tag can be located by existing line
location = MAINBROWSER.find_element_by_id("localisation")
# ....... other logics ........
主体永远不会执行。
答案 1 :(得分:0)
如果
f.readline()
返回空字符串,则已到达文件末尾
从empty strings are evaluated as false
in Python开始,当达到EOF时,while条件不再为真。