Python多种方式统计文本行数 大文本 文件行数文件内

系统 1728 0

方法一 Python 读取文件

针对小文件可行,大文件效率和性能都很差。以下是几种写法

            
              
                def
              
              
                get_count
              
              
                (
              
              file_abs_name
              
                )
              
              
                :
              
              
                """
	
	:param: file_abs_name 文件名含绝对路径
	"""
              
              
                with
              
              
                open
              
              
                (
              
              file_abs_name
              
                ,
              
              
                'r'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
		cnt 
              
                =
              
              
                len
              
              
                (
              
              f
              
                .
              
              readlines
              
                )
              
              
		f
              
                .
              
              flush
              
                (
              
              
                )
              
              
                return
              
               cnt

            
          
            
              
                def
              
              
                get_count
              
              
                (
              
              file_abs_name
              
                )
              
              
                :
              
              
                """
	
	:param: file_abs_name 文件名含绝对路径
	"""
              
              
                with
              
              
                open
              
              
                (
              
              file_abs_name
              
                ,
              
              
                'r'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
		cnt 
              
                =
              
              
                0
              
              
                for
              
               line 
              
                in
              
               f
              
                :
              
              
			cnt 
              
                +=
              
              
                1
              
              
		f
              
                .
              
              flush
              
                (
              
              
                )
              
              
                return
              
               cnt

            
          
            
              
                def
              
              
                get_count
              
              
                (
              
              file_abs_name
              
                )
              
              
                :
              
              
                """
	论坛很多这种写法,但是大部分都写错了
	"""
              
              
	cnt 
              
                =
              
              
                0
              
              
                with
              
              
                open
              
              
                (
              
              file_abs_name
              
                ,
              
              
                'r'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
                for
              
               index
              
                ,
              
               line 
              
                in
              
              
                enumerate
              
              
                (
              
              f
              
                )
              
              
                :
              
              
                pass
              
              
		f
              
                .
              
              flush
              
                (
              
              
                )
              
              
		
	cnt 
              
                =
              
               index 
              
                +
              
              
                1
              
              
                return
              
               cnt

            
          

方法二 Linux 读取文件行数

采用Linux命令的方式,读取效率比较高

            
              
                import
              
               os



              
                def
              
              
                get_count
              
              
                (
              
              file_abs_name
              
                )
              
              
                :
              
              
                """
	
	"""
              
              
	cmd 
              
                =
              
              
                'wc -l '
              
              
                +
              
               file_abs_name
	
              
                return
              
              
                int
              
              
                (
              
              os
              
                .
              
              system
              
                (
              
              cmd
              
                )
              
              
                )
              
            
          

方法三 linecache库 Python第三方库

程序员的正常思路 是在github搜索相关资源
linecache2 https://github.com/testing-cabal/linecache2
该库提供了获取总行数, 以及制定某行内容等的方法

linecache_light https://github.com/Yelrose/linecache_light
功能同上,内存开销更小


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论