python基础——python程序文件代码行数读取

  一个目录里面多个python程序文件,统计一下里面有多少行代码。即分别列出:代码、空行、注释的行数。

python代码实现:

import os,re

# 读取文件内容函数
def MyReadFile(path):
    # 以读取模式打开文件
    # 出现错误:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 6: illegal multibyte sequence
    # 解决方法:open() 函数中加上 encoding='UTF-8'
    file = open(path, "r", encoding='UTF-8')

    lines = file.readlines()
    total_line = len(lines) # 总行数
    note_line = 0  # 注释行数
    blank_line = 0  # 空行数

    # 遍历每一行
    index = 0  # 遍历的初始位置标记
    while index < total_line:
        line = lines[index]
        # 检查是否为注释
        # 去掉左边空格 lstrip()
        if line.startswith("#") or line.lstrip().startswith("#"):
            note_line += 1
        # 多行注释判断
        # 正则表达式 判断开头是否为 多行注释开始
        elif re.match("\s*'''", line) is not None:
            # 多行注释本行结束
            if re.match(".*'''$", line) is not None:
                if re.match(".*'''$", line).span()[1] != 3:
                    note_line += 1
                else:
                    note_line += 1
                    index += 1
                    line = lines[index]
                    # 判断下一行的结尾是否为 是空行还是注释行结尾
                    while re.match(".*'''$", line) is None:
                        line = lines[index]
                        note_line += 1
                        index += 1
        # 检查是否为空行
        elif line == '\n':
            blank_line += 1
        index += 1
    print("文件:", path)
    print("文件总行数为:", total_line, "行")
    print("注释行数为:", note_line, "行")
    print("空行数为:", blank_line, "行")
    print()

# 读取路径下的文件
def MyReadPath(path):
    # os.chdir() 改变当前工作目录到指定的路径
    os.chdir(path)
    # os.listdir() 返回指定的文件夹包含的文件或文件夹的名字的列表
    # os.getcwd() 返回当前工作目录
    files = os.listdir(os.getcwd())
    for file in files:
        # os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组
        if os.path.splitext(file)[1] == '.py':
            MyReadFile(file)

if __name__ == "__main__":
    # 这里填写自己要读取的文件夹路径
    MyReadPath("E:\pycharm\PycharmProjects\pythonLearn\Learn\shiyan2")

运行结果:

文件目录 运行结果
python基础——python程序文件代码行数读取_第1张图片 python基础——python程序文件代码行数读取_第2张图片

总结:
  从运行结果可以看出,运行后会读取给定目录下的.py文件,如果不是.py文件则不读取,文件路径下中有test.txt文件,但是不会读取它,只读取了两个.py结尾的文件。
  该代码只是简单的判断了哪行是代码行、注释行和空行,如果一行代码中后面跟上注释,那么认为是代码行,多行注释中的空行判断是注释行。

你可能感兴趣的:(python)