python判断txt文件是否为空_关于python:检查文本文件是否为空

我有一部分原本无法工作的代码,看起来是这样的:

1

2

3

4

5

6with 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

6with open ("Names.txt" ,"r+") as f:

f.seek(0)

if not f.read():

print("No text")

else :

print ("Got text")

所以我的问题是,为什么第二段代码有效,而第一段代码无效?

提前感谢<3

if f.read() ==""检查空间,而不是空字符串。你知道吗?

"A space"不等于"empty"。

不要读取文件来查看它是否为空…只需检查尺寸:与EDOCX1[1]

只是不要测试这样的文件是否为空。

如果文件大5兆字节怎么办?它将尝试读取所有文件…

您可以尝试读取1个字节,并查看是否为空:

1

2

3

4if f.read(1):

# file isn't empty

else:

# file is empty

或者只是检查尺寸,不需要打开,寻找,无论什么:

1

2

3

4if os.path.getsize(filename):

# file isn't empty

else:

# file is empty

您正在与字符串""进行比较。这不是空文件。正确的代码如下:

1

2

3

4

5

6with open ("Test.txt" ,"r+") as f:

f.seek(0)

if f.read() =="" :

print("No text")

else :

print ("Got text")

也许,因为在第一种情况下,您不将其与空字符串(""进行比较,而是将其与包含单个空格(""的字符串进行比较。

在第一种情况下,将结果与""进行比较(注意引号之间的空格)。这个空间不等于一个空文件,而是寻找一个长度正好为1的文件,其中单个字符就是空间字符。

而第二个代码片段则有效地检查文件的长度是否为0,这正是您实际要做的(因此它起作用的原因)。

要修复第一个代码片段,需要将其与空字符串f.read() ==""进行比较。您还可以显式地检查文件长度:len(f.read()) == 0或not len(f.read()),或者您也可以检查文件长度而不读取它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值