Checking if a text file is empty
我有一部分原本无法工作的代码,看起来是这样的:
1 2 3 4 5 6 | with open ("Names.txt" ,"r+") as f: f.seek(0) if f.read() =="" : print("No text") else : print ("Got text") |
它应该做的是检查文本文件是否有任何文本。然而,当我运行这个代码时,它总是返回"got text",即使文件是空的。在尝试修复它大约10分钟后,我稍微更改了代码,并找到了一种方法使其工作:
1 2 3 4 5 6 | with open ("Names.txt" ,"r+") as f: f.seek(0) if not f.read(): print("No text") else : print ("Got text") |
所以我的问题是,为什么第二段代码有效,而第一段代码无效?
提前感谢<3
只是不要测试这样的文件是否为空。
如果文件大5兆字节怎么办?它将尝试读取所有文件…
您可以尝试读取1个字节,并查看是否为空:
1 2 3 4 | if f.read(1): # file isn't empty else: # file is empty |
或者只是检查尺寸,不需要打开,寻找,无论什么:
1 2 3 4 | if os.path.getsize(filename): # file isn't empty else: # file is empty |
您正在与字符串""进行比较。这不是空文件。正确的代码如下:
1 2 3 4 5 6 | with open ("Test.txt" ,"r+") as f: f.seek(0) if f.read() =="" : print("No text") else : print ("Got text") |
也许,因为在第一种情况下,您不将其与空字符串(
在第一种情况下,将结果与
而第二个代码片段则有效地检查文件的长度是否为0,这正是您实际要做的(因此它起作用的原因)。
要修复第一个代码片段,需要将其与空字符串