我有一个包含以下内容的文件:
a
b
c
d
我正在使用以下代码在 Python 中阅读此内容:
f = open('foo.txt')
w = f.readline()
while w is not '' :
print w
w = f.readline()
根据docs
if f.readline() returns an empty string, the end of the file has been reached
为什么我会进入无限循环?
请您参考如下方法:
is 运算符测试两个引用是否引用完全相同的对象。在这种情况下,您需要如前所述进行相等性检查。
无限循环的发生是因为虽然它返回了'',但它是str的不同实例。不同的实例,但相同的值。
Python 可能会也可能不会选择重新使用现有的 str 对象(毕竟它们是不可变的)作为优化。但是,您通常不应依赖这种类型的行为,除非文档中另有特别说明(例如 None,因为它是 NoneType 的唯一实例)。
