检查文本文件是否为空

我有这部分代码,我最初无法工作:


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

    f.seek(0)

    if f.read() == " ":

        print("No text")

    else:

        print("Got text")

它应该检查文本文件是否有任何文本。


但是,当我运行此代码时,即使文件为空,它也会始终返回“获取文本”。


我找到了一种使它工作的方法:


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

    f.seek(0)

    if not f.read():

        print("No text")

    else:

        print("Got text")

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


慕婉清6462132
浏览 156回答 3
3回答

繁花如伊

只是不要像这样测试文件是否为空。如果文件有 5 TB 大怎么办?它将尝试读取所有文件...您可以尝试读取 1 个字节并查看是否为空:if f.read(1):   # file isn't emptyelse:   # file is empty或者只是检查大小,无需打开,寻找,无论:if os.path.getsize(filename):   # file isn't emptyelse:   # file is empty

犯罪嫌疑人X

也许,因为在第一种情况下,您不是与空字符串 ( "")进行比较,而是与包含单个空格 ( " ")的字符串进行比较。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python