返回顶部
首页 > 资讯 > 后端开发 > Python >python统计文件行数
  • 233
分享到

python统计文件行数

行数文件python 2023-01-31 01:01:25 233人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

需求:需要统计一个文件的行数.讨论:最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(open(filepath,

需求:

需要统计一个文件的行数.

讨论:

最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:

count = len(open(filepath,'rU').readlines())

如果是非常大的文件,上面的方法可能很慢,甚至失效.此时,可以使用循环来处理:

count = -1
for count, line in enumerate(open(thefilepath, 'rU')):
    pass
count += 1

另外一种处理大文件比较快的方法是统计文件中换行符的个数'\n

'(或者包含'\n'的字串,如在windows系统中):

count = 0
thefile = open(thefilepath, 'rb')
while True:
    buffer = thefile.read(8192*1024)
    if not buffer:
        break
    count += buffer.count('\n')
thefile.close( )

参数'rb'是必须的,否则在windows系统上,上面的代码会非常慢.

当 外部系统提供统计行数的方法时,你可以使用它们(通过os.popen),如unix的wc - l.当然,通过自己的程序来完成会更简单,快捷和通用.你可以假设大多数的文本文件都有合理的大小,所以把它们一次读入内存中处理是可行的.对于这样的情 况,len方法返回readlines的大小是最简单的.
加入一个文件的大小大于内存(比如,有好几百M那么大),那个最简单的方法会变得难以忍受的慢,因为操作系统要使用虚拟内存,并不停同过硬盘来换页.也可能出现失败的情况 ,就是虚拟内存不够大.一台有256M内存的机器,当处理一个1G或2G大小的文件的时候,仍然可能出现严重的问题.在这种情况下,使用循环处理是比较好的方式,enumerate保存了函数.
第三种方法的核心思想是统计缓存中回车换行字符的个数.这可能最不容易直接想到的方法,也是最不通用的方法,但它可能是最快的方法.
当然,在大多数情况下,性能并不是最重要的,但如果它是的话,影响性能的部分往往不是我们的直觉告诉我们的地方,所以请千万不要相信自己的直觉, 要考评估和测量来判断.举例说明,对于一个中等大小的unix日志文件,比如一个18M的文本,包含了230,000行:

[situ@tioni nuc]$ wc nuc
231581 2312730 18508908 nuc

使用下面的测试文件,bench.py:

import time
def timeo(fun, n=10):
    start = time.clock( )
    for i in xrange(n): fun( )
    stend = time.clock( )
    thetime = stend-start
    return fun._ _name_ _, thetime
import os
def linecount_w( ):
    return int(os.popen('wc -l nuc').read( ).split( )[0])
def linecount_1( ):
    return len(open('nuc').readlines( ))
def linecount_2( ):
    count = -1
    for count, line in enumerate(open('nuc')): pass
    return count+1
def linecount_3( ):
    count = 0
    thefile = open('nuc', 'rb')
    while True:
        buffer = thefile.read(65536)
        if not buffer: break
        count += buffer.count('\n')
    return count
for f in linecount_w, linecount_1, linecount_2, linecount_3:
    print f._ _name_ _, f( )
for f in linecount_1, linecount_2, linecount_3:
    print "%s: %.2f"%timeo(f)

首先我调用所有的方法来读文件,以确保不会发生异常情况(如果发生的话程序会中止),接下来,在函数timo中,我调用每种方法10次,然后看看结果,这是一个比较旧但比较稳定的机器:

[situ@tioni nuc]$ python -O bench.py
linecount_w 231581
linecount_1 231581
linecount_2 231581
linecount_3 231581
linecount_1: 4.84
linecount_2: 4.54
linecount_3: 5.02

可以看出,性能上的差别不是很大,实际上,一般用户不会在意10%左 右的性能差别.另外,最快的方法是用循环处理文件对象,而最慢的方法是统计换行符的个数.在实际中,假如不考虑处理那些好几百M的大文件,我总是会选中第一种最简单的方法.
测量代码的性能是很重要的,Python标准库也提供了timeit来实现这些工作.我建议你使用timeit,而不是像我在本节做的那样,自己写测试代码,我写的代码是好几年前的事情了,现在既然有了timeit,就没有必要再使用它了.

来自:Http://blog.sina.com.cn/s/blog_48acdd250100qh93.html


--结束END--

本文标题: python统计文件行数

本文链接: https://lsjlt.com/news/184538.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 统计文件行数
    方法1 count = len(open(filepath, 'r').readlines()) 这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。 方法2 可以利用enumerate(),统计文件函数: count = ...
    99+
    2023-01-31
    行数 文件 python
  • python统计文件行数
    需求:需要统计一个文件的行数.讨论:最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了:count = len(open(filepath,...
    99+
    2023-01-31
    行数 文件 python
  • python 代码统计文件的行数
    #!/usr/bin/python#encofing:utf8# 统计文件的行数import sysdef lineCount(fd):        n = 0        for i in fd:                n +...
    99+
    2023-01-31
    行数 代码 文件
  • python如何统计并输出文件的行数
    在Python中,可以使用以下方法来统计并输出文件的行数: 方法1:使用readlines()方法逐行读取文件内容,并利用len()...
    99+
    2023-10-21
    python
  • 统计python代码行数
        addhosts项目已接近尾声,我很想知道我们写了多少行代码。一、需求    统计源码目录下py文件的代码行数。    二、脚本分析    获取指定目录下所有的.py文件,对文件进行遍历;    读取每个文件,对文件内容进行遍历,过...
    99+
    2023-01-31
    行数 代码 python
  • PHP如何统计代码行数及文件数量
    今天小编给大家分享一下PHP如何统计代码行数及文件数量的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。用PHP统计代码行数和文...
    99+
    2023-07-04
  • linux 统计文件数量
    数量统计方法 下面分情况介绍下这 3 个命令的使用方法。 统计当前目录下文件的个数(不包括目录) ls -l | grep "^-" | wc -l 统计当前目录下文件的个数(包括子目录) ls ...
    99+
    2023-09-15
    linux 运维 服务器
  • Python实现统计文本文件字数的方法
    本文实例讲述了Python实现统计文本文件字数的方法。分享给大家供大家参考,具体如下: 统计文本文件的字数,从当前目录下的file.txt取文件 # -*- coding: GBK -*- import...
    99+
    2022-06-04
    文本文件 字数 方法
  • Shell脚本统计文件行数的8种方法
    获取单个文件行数 文件:test1.sh 行数:20 方法一 awk '{print NR}' test1.sh|tail -n1 如图所示: 方法二 awk 'END{print NR}' tes...
    99+
    2022-06-04
    种方法 脚本 行数
  • 怎么利用Python快速统计文本的行数
    本篇文章为大家展示了怎么利用Python快速统计文本的行数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。通常我们会用wc -l来统计文件行数,不过用Python统计也很简单。要快速统计一个文本文件中...
    99+
    2023-06-22
  • 如何利用Python快速统计文本的行数
    ​​通常我们会用wc -l来统计文件行数,不过用Python统计也很简单。 要快速统计一个文本文件中的行数,其实就是要统计这个文本文件中换行符的个数。为了尽量提高速度,我们需要尽量多...
    99+
    2024-04-02
  • python编写文件统计脚本
    python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir()、os.path.isdir()、os.path.join()、os.path.abspath()等) 实现功能:显示多级目录,以及自己要找的具体文件类型...
    99+
    2023-01-30
    脚本 文件 python
  • 怎么用python统计文件类型及数量
    要统计文件类型及数量,你可以使用Python的os模块来遍历文件夹中的文件,然后使用文件的后缀来判断文件类型。以下是一个示例代码: ...
    99+
    2023-10-21
    python
  • linux如何统计文件有多少行
    这篇“linux如何统计文件有多少行”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux如何统计文件有多少行”文章吧。在...
    99+
    2023-06-30
  • 有哪些Shell脚本统计文件行数的方法
    这篇文章主要讲解了“有哪些Shell脚本统计文件行数的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些Shell脚本统计文件行数的方法”吧!获取单个文件行数文件:test1.sh行数...
    99+
    2023-06-09
  • Linux怎么统计文件数量
    这篇文章主要介绍了Linux怎么统计文件数量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux怎么统计文件数量文章都会有所收获,下面我们一起来看看吧。统计当前目录下文件的个数(不包括目录) $&...
    99+
    2023-06-28
  • linux怎么统计文件个数
    要统计Linux系统中某个目录下的文件个数,可以使用以下命令: ls -l | grep "^-" | wc -l 这个命令的具体解...
    99+
    2023-10-21
    linux
  • Python3 统计 ftp 文件个数和
    【背景】    本程序遍历 ftp 目录,列出单个文件大小,统计目录个数、文件个数、文件总大小。目的是在批量下载 FTP 文件时,不严格的验证下载结果的正确性。 【环境】    Windows10 下 Python 3.6.5,第三方包 f...
    99+
    2023-01-31
    个数 文件 ftp
  • python怎么统计文件夹大小
    要统计文件夹的大小,可以使用os模块和shutil模块。 以下是一个示例代码,可以统计文件夹的大小: import os impor...
    99+
    2023-10-23
    python
  • Linux系统中怎么统计文件夹下文件数量
    这篇文章主要讲解了“Linux系统中怎么统计文件夹下文件数量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux系统中怎么统计文件夹下文件数量”吧!一种是:代码如下:ls -l |gre...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作