【问题标题】:Correct condition for file reading using readline() in Python在 Python 中使用 readline() 读取文件的正确条件
【发布时间】:2018-08-26 06:36:04
【问题描述】:

我知道下面的代码可以正常工作。阅读 Python 中的 while 循环文档,他们说 while 表达式应该是 True 或 False,这是有道理的。

现在readline() 函数返回字符串。那么这个 while 循环是如何工作的呢?

with open(datafile, "r") as f:
        line = f.readline();
        while line :
            print line
            line = f.readline()
            data.append(line)
        print line
    return data

【问题讨论】:

标签: python python-2.7


【解决方案1】:

当在布尔上下文中使用时,许多对象解析为TrueFalse,在这种情况下包括一个空字符串。数字零、空元组、列表、集合和字典也是False

类可以通过提供__bool__ 方法(或Python 2 中的__nonzero__)来决定对象何时/是否为TrueFalse。虽然有时真理与对象无关。

另见Defining "boolness" of a class in python

【讨论】:

    【解决方案2】:

    Python 中等于"" 的字符串的计算结果为False,而任何非空白字符串的计算结果为True

    #Evaluates to False
    print(bool(""))
    
    #Evaluates to True
    print(bool("A String"))
    

    在您指定的循环中,如果有一行被成功读取,则字符串line 不会为空,因此将评估为True。一旦有一行没有读入字符串,字符串line 将被设置为False 并且循环应该退出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2021-11-22
      • 2014-05-17
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      相关资源
      最近更新 更多