while表达式如何在这里工作?

时间:2018-02-12 11:34:19

标签: python while-loop expression statements

我一直在测试文本文件中的读取行,最后让我的程序正确执行。但我不确定为什么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

2 个答案:

答案 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)

来自the Python docs

  

如果f.readline()返回空字符串,则已到达文件末尾

empty strings are evaluated as false in Python开始,当达到EOF时,while条件不再为真。