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

方法一 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
import subprocess


def get_count(file_abs_name):
	"""
	
	"""
	cmd = 'wc -l ' + file_abs_name
	# 写法一  结果直接返回到控制台, 不会返回,同时有安全风险
	# int(os.system(cmd))

	# 写法二 可能会有shell注入的安全风险
	# return int(os.popen(cmd).read().split()[0])

	# 写法三 推荐
	return int(subprocess.Popen(['wc', '-l', os.path.abspath(file_abs_name)]).stdout.read().split()[0])

方法三 linecache库 Python第三方库

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

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值