Python中如何用file.readline()区分EOF与空行?
处理含大量空行的文件:Python区分空行与EOF的实用方案
我需要处理一个名为filename.txt的大文件,文件里有大量空行,要求遇到空行直接忽略,碰到文件末尾(EOF)就终止程序。Python本身没有直接区分空行和EOF的方法,但实际测试后找到了可行的解决思路:
测试发现的行特征
- 空行的长度为1(因为包含CRLF换行符),和仅含1个字符的行长度一致
- 对空行执行
strip()后会得到空字符串,长度为0 - 所有从文件读取的行,其长度等于实际有效字符数加1(额外的1是CRLF换行符)
- 执行
strip()后的行长度,等于该行的实际有效字符数
解决办法
由于我原本就需要对读取的内容做strip()处理,所以调整逻辑为:读取每一行后立即执行strip(),如果处理后的字符串为空(长度为0),就判定这是个空行并跳过;当循环自动结束时,就说明已经到达EOF,程序自然终止。
示例代码:
with open('filename.txt', 'r') as f: for line in f: processed_line = line.strip() if not processed_line: continue # 忽略空行 # 这里写你对非空行的处理逻辑 print(processed_line)
内容的提问来源于stack exchange,提问作者DR ROBERT E PETERSEN
相关产品推荐
相关产品推荐

