怎么利用Python快速统计文本的行数
发表于:2025-11-19 作者:千家信息网编辑
千家信息网最后更新 2025年11月19日,本篇文章为大家展示了怎么利用Python快速统计文本的行数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。通常我们会用wc -l来统计文件行数,不过用Pytho
千家信息网最后更新 2025年11月19日怎么利用Python快速统计文本的行数
本篇文章为大家展示了怎么利用Python快速统计文本的行数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
通常我们会用wc -l来统计文件行数,不过用Python统计也很简单。
要快速统计一个文本文件中的行数,其实就是要统计这个文本文件中换行符的个数。为了尽量提高速度,我们需要尽量多读一些文本然后一起处理。统计换行符的个数可以用bytes内置的count方法。
代码如下:
from __future__ import print_functionimport timeif __name__ == '__main__': import sys start = time.time() with open(sys.argv[1],'rb') as f: count = 0 last_data = '\n' while True: data = f.read(0x400000) if not data: break count += data.count(b'\n') last_data = data if last_data[-1:] != b'\n': count += 1 # Remove this if a wc-like count is needed end = time.time() print(count) print((end-start) * 1000)
上面的代码中,我们将文件尾没有换行符的不完整的部分也算作一行,这跟wc -l略有区别,如果要跟wc -l一致的话,可以将带注释的行删掉。
这里没有处理universal newline、忽略空行等逻辑,如果需要这些功能,程序会变得复杂一些。
使用三个文本文件进行测试,分别有一千万行、一亿六千万行、六亿四千万行。先用wc -l运行两次,然后用Python的wc.py。
运行结果:
[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text.txt && time wc -l text.txt && time python3 wc.py text.txt"10000000 text.txtreal 0m0.086suser 0m0.072ssys 0m0.013s10000000 text.txtreal 0m0.080suser 0m0.060ssys 0m0.019s1000000064.38159942626953real 0m0.150suser 0m0.100ssys 0m0.033s[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text3.txt && time wc -l text3.txt && time python3 wc.py text3.txt"160000000 text3.txtreal 0m1.322suser 0m0.991ssys 0m0.318s160000000 text3.txtreal 0m1.313suser 0m0.966ssys 0m0.341s160000000838.7012481689453real 0m0.908suser 0m0.595ssys 0m0.297s[root@yz- test]# docker run -it --rm -v `pwd`:/opt/workspace python:3 bash -c "cd /opt/workspace && time wc -l text4.txt && time wc -l text4.txt && time python3 wc.py text4.txt"640000000 text4.txtreal 0m5.805suser 0m4.349ssys 0m1.455s640000000 text4.txtreal 0m5.787suser 0m4.342ssys 0m1.445s6400000003323.5926628112793real 0m3.399suser 0m2.255ssys 0m1.108s
可以看到Python实际上是比wc -l更快的,主要因为纯Python的步骤很少,大部分时间都在read(),count()这样的C实现的过程中。wc更慢的原因猜想可能是默认的缓冲区更小,所以需要更多的read()
上述内容就是怎么利用Python快速统计文本的行数,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
统计
文本
文件
换行符
个数
代码
内容
就是
技能
更多
知识
处理
运行
复杂
简明
一致
简明扼要
一行
三个
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
台州计算机网络技术
学信网数据库百度网盘
数据库1130错误什么意思
现代化软件开发注意事项
java软件开发调研报告
华为网络顶盒改打印机服务器
怎么用odbc维护数据库
万方数据库杂志级别查询
安全隐患问题数据库
2020年全国网络安全大会
嵌入式用什么开发软件开发
达沃斯论坛全球网络安全
网络技术部工作职责
数据库的基础语句
管家婆云服务器在哪个国家
mc重启梦想服务器
各厂家服务器管理口地址
软件开发专业有什么
三联图书管理服务器
温州企飞网络技术公司电话
软件开发分为哪些类型
分布式数据库怎么看
一个图看懂网络安全
嵌入式软件开发硕士
多家网站被植入网络安全
惠州一对一学软件开发
管理的授权服务器无效
核心数据库与主机联网
药物不良反应报告数据库
温州企飞网络技术公司电话