使用python统计文件行数示例分享

yizhihongxing

以下是使用Python统计文件行数的完整攻略:

1. 判断文件类型

首先需要确定需要统计的文件类型,可以根据文件后缀名进行判断。如果只需要统计代码文件(如.py、.java、.cpp等),可以使用os模块的walk函数遍历文件夹,判断每个文件的后缀名是否符合要求。

import os

def walk_folder(folder_path):
    for dirpath, dirnames, filenames in os.walk(folder_path):
        for filename in filenames:
            if filename.endswith(".py") or filename.endswith(".java") or filename.endswith(".cpp"):
                file_path = os.path.abspath(os.path.join(dirpath, filename))
                count_line(file_path)

def count_line(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        line_num = 0
        for line in f:
            if line.strip():
                line_num += 1
        print(f"{file_path}共{line_num}行代码")

以上代码中,使用os模块的walk函数遍历文件夹中的每一个文件,如果文件后缀名符合要求,则调用count_line函数统计文件行数。

2. 支持单文件统计

除了支持遍历文件夹进行统计外,还需要支持单个文件的统计。可以通过命令行参数的方式传递需要统计的文件路径,也可以通过input函数进行交互式输入。

import sys

def main():
    if len(sys.argv) > 1:
        # 读取命令行参数
        file_path = sys.argv[1]
        if not os.path.exists(file_path):
            print("文件不存在")
            return
        count_line(file_path)
    else:
        # 交互式输入
        while True:
            file_path = input("请输入文件路径:")
            if not os.path.exists(file_path):
                print("文件不存在")
                continue
            count_line(file_path)
            break

if __name__ == '__main__':
    main()

以上代码中,使用sys模块的argv列表读取命令行参数进行文件路径获取,如果没有命令行参数,则通过input函数进行交互式输入。

示例1:对文件夹进行遍历统计

假设我们有一个文件夹,里面包含了一些Python和Java代码文件,我们需要统计每个文件的行数。

$ tree test_folder
test_folder
├── java
│   └── HelloWorld.java
└── python
    ├── hello.py
    └── count.py

使用walk_folder函数遍历文件夹,统计文件行数。

import os

def walk_folder(folder_path):
    for dirpath, dirnames, filenames in os.walk(folder_path):
        for filename in filenames:
            if filename.endswith(".py") or filename.endswith(".java"):
                file_path = os.path.abspath(os.path.join(dirpath, filename))
                count_line(file_path)

def count_line(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        line_num = 0
        for line in f:
            if line.strip():
                line_num += 1
        print(f"{file_path}共{line_num}行代码")

if __name__ == '__main__':
    walk_folder('test_folder')

输出结果:

/Users/test_folder/python/hello.py共4行代码
/Users/test_folder/python/count.py共13行代码
/Users/test_folder/java/HelloWorld.java共2行代码

示例2:单个文件交互式统计

假设我们需要手动输入统计的文件路径,可以执行以下代码:

import os

def count_line(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        line_num = 0
        for line in f:
            if line.strip():
                line_num += 1
        print(f"{file_path}共{line_num}行代码")

if __name__ == '__main__':
    while True:
        file_path = input("请输入文件路径:")
        if not os.path.exists(file_path):
            print("文件不存在")
            continue
        count_line(file_path)
        break

输出结果:

请输入文件路径:test_folder/python/hello.py
test_folder/python/hello.py共4行代码

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用python统计文件行数示例分享 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 比较详细Python正则表达式操作指南(re使用)

    Python正则表达式操作指南 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。Python中re模块提供了正则表达式的支持,本攻略将详细讲解如何使用re模块进行正则表达式的操作。 re模块基本用法 在使用re模块之前,需要先导入该模块: import re re模块提供了一些常用的函数用于处理正则表达式: re.search(patter…

    python 2023年5月14日
    00
  • Python实现遍历数据库并获取key的值

    下面我将详细讲解 Python 实现遍历数据库并获取 key 的值的攻略。 准备工作 在开始编写程序之前,我们需要进行一些准备,包括安装数据库驱动和连接数据库。 安装数据库驱动程序 在 Python 中操作数据库需要借助相应的驱动程序。以 MySQL 为例,如果您要使用 Python 操作 MySQL 数据库,需要安装 mysql-connector-pyt…

    python 2023年6月3日
    00
  • python实现0到1之间的随机数方式

    要在Python中生成0到1之间的随机数,我们可以使用Python标准库中的random模块。下面是完整的攻略: 引入random模块 在Python代码中,我们需要首先引入random模块,以便可以使用它提供的函数。在代码中引入random模块的方式如下: import random 使用random.random()函数生成随机数 在引入random模块…

    python 2023年6月3日
    00
  • Python 列表理解及使用方法

    Python列表理解及使用方法 在Python中,列表是一种非常常用的数据类型,用于存储一组有序的元素。列表可以包含不同类型的元素,包括数字、字符串、布尔值等。本文将详细介绍Python列表的理解及使用方法,包括列表的创建、列表的操作、列表的方法等。 列表的创建 要创建一个列表,我们可以使用方括号[]或list()函数。例如: # 创建列表 my_list …

    python 2023年5月13日
    00
  • 对python3新增的byte类型详解

    下面我将为您详细讲解“对python3新增的byte类型详解”的攻略。 什么是bytes类型 byte是python3中的内置类型,表示一个不可变的字节序列(bytes,字节串)。在python3之前,需要使用str类型表示字节码,但是由于str类型底层采用的是unicode编码,所以在处理二进制数据时会有一些限制,因此python3新增byte类型,专门用…

    python 2023年5月19日
    00
  • Python跳出多重循环的方法示例

    关于 “Python跳出多重循环的方法示例” 的完整攻略,可以分为以下几个部分: 1. 背景介绍 在Python中,使用循环结构可以重复执行某段代码,而在多重循环中,程序可能需要在某一条件下,跳出整个循环结构,即跳出所有的循环,这时候可以使用 break 和标志位这两种方法实现。 2. break方法 break可以跳出当前所在的循环结构,并继续执行循环外的…

    python 2023年5月13日
    00
  • Python对象与json数据的转换问题实例详解

    首先我们来讲一下Python对象和json数据的基本概念。Python中的所有数据都是对象,包括基本类型和自定义类型。而json则是一种轻量级的数据格式,常用于数据的传输和存储。 Python对象与json数据的转换问题是在实际开发中经常遇到的问题,本文将从两个方面来介绍Python对象与json数据的转换:Python自带的json模块和第三方库simpl…

    python 2023年5月13日
    00
  • python3读取MySQL-Front的MYSQL密码

    在本攻略中,我们将介绍如何使用Python3读取MySQL-Front的MYSQL密码。以下是一个完整攻略,包括两个示例。 步骤1:安装所需库 首先,需要安装所需的库。我们可以使用PyMySQL库来连接MySQL数据库。 以下是示例代码,演示如何使用pip安装PyMySQL库: pip install PyMySQL 步骤2:读取MySQL密码 接下来,我们…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部