Python判断文件最后一行是否是空行

先提供两种提取最后一行文本的方案:

读取小文件时:

with open('dict.text', 'r') as fp:
    lines = fp.readlines()
    last_line = lines[-1]
print(last_line)

读取大文件时:

fname = 'dict.text'
with open(fname, 'rb') as f:  # 打开文件
    first_line = f.readline()  # 读第一行
    off = -50  # 设置偏移量
    while True:
        f.seek(off, 2)  # seek(off, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
        lines = f.readlines()  # 读取文件指针范围内所有行
        if len(lines) >= 2:  # 判断是否最后至少有两行,这样保证了最后一行是完整的
            last_line = lines[-1]  # 取最后一行
            break
        # 如果off为50时得到的readlines只有一行内容,那么不能保证最后一行是完整的
        # 所以off翻倍重新运行,直到readlines不止一行
        off *= 2

    print(last_line)

以上两种方式在实测的时候如果文件最后存在空行,都不会实际输出空行,如下:

Python判断文件最后一行是否是空行

可见文件中存在空行但是最后的输出却不是空行,而是倒数第二行存在内容的一行。

这问题也是前两天开发机器人的补码模块的时候发现的问题,百度之后发现所给的文章都不大适合我这种7天python新手,于是自行进行写入读取 发现如果最后一行存在空行,那么是存在一个换行符的,当然明面上是看不到的,于是修正代码如下:

with open('dict.text', 'r') as fp:
    lines = fp.readlines()
    last_line = lines[-1]
if '\n' in last_line: #使用in判断last_lines是否存在换行符
    print("存在空行")
else:
    print(last_line)

结果如下:

Python判断文件最后一行是否是空行

存在空行时会提示存在空行,修改文件,删除最后的空行,结果如下:

Python判断文件最后一行是否是空行

这时已经正确的判断了文件最后一行是否存在空行。

给TA打赏
共{{data.count}}人
人已打赏
折腾日记

Telegram邀请码机器人源码 自动发码 数量统计 无码提醒

2020-5-21 15:37:45

折腾日记

记一次CDN被刷

2020-5-27 16:45:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索