怎么利用Python快速统计文本的行数
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,本篇文章为大家展示了怎么利用Python快速统计文本的行数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。通常我们会用wc -l来统计文件行数,不过用Pytho
千家信息网最后更新 2025年01月26日怎么利用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安全错误
数据库的锁怎样保障安全
宿迁网站建设软件开发
手机股票app软件开发
买用户数据库吗
金蝶k3打开数据库
成都电商软件开发价钱是多少
数据库设计字段的设计
鉴别真假软件开发
铁路网络技术与应用
物联网电瓶车软件开发公司
腾讯云服务器怎么设置安全
北约网络安全防护中心
计算机网络安全的危害
安卓 调用数据库
三级计算机网络技术历年真题
不同ip段怎么连上另一个服务器
软件开发组长的月薪
阿里巴巴网络安全工程师
日照网络安全教育平台登录
电力软件开发有前途
远程服务器能查询谁登录过吗
崇明区数据软件开发代理品牌
数据库 维度
软件开发开箱照
网络安全周宣传通知
纳入省网络安全反诈平台管理
在电脑上启动tomcat服务器
linux如何登陆数据库
当今社会科技发展 互联网
安徽正规软件开发定制费用
java数据库竞赛信息