Python如何检测txt文件是否仅包含空白字符(含换行符)
原代码问题排查
你的代码逻辑错误主要有两点:
- 读取文件的方法选错了:
readlines()返回的是由每一行内容组成的列表对象,你直接对列表做str()转换,得到的字符串会包含Python列表的格式字符,比如方括号[]、元素分隔逗号、字符串引号等,这些字符根本不是文件本身的内容,自然不可能通过空白字符校验。比如文件仅存一个换行符时,readlines()得到的是['\n'],转字符串后是"['\\n']",里面的括号、引号都不属于空白字符,判断结果必然错误。 - 边界场景没覆盖:如果目标文件是完全空的0字节文件,读取到的内容是空字符串,此时直接调用
isspace()会返回False,但空文件本身没有任何非空白内容,按你的需求应该归为“仅含空白字符”的合规场景。
另外你不需要额外处理换行符的判定,Python原生的str.isspace()方法本身就会将\n识别为空白字符,同时覆盖空格、制表符\t、回车\r等所有常见空白字符,完全符合你的判定要求。
正确实现代码
# 注意根据你的文件实际编码替换encoding参数,避免读取乱码 with open('save.txt', 'r', encoding='utf-8') as fname: file_content = fname.read() if not file_content or file_content.isspace(): print("only whitespaces") else: print("not only whitespaces")
代码逻辑说明:
- 用
read()一次性读取文件全部内容为单个字符串,不会引入额外的格式字符 not file_content用来覆盖空文件的场景file_content.isspace()直接判断所有非空场景下,内容是否全为空白字符(含你要求的换行符)
内容的提问来源于stack exchange,提问作者AfterHover
相关产品推荐
相关产品推荐

