Python统计项目代码行数

# -*- coding: utf-8 -*-
"""
Created on Sat Mar 28 10:06:36 2020

@author: Hi Daniel
"""

import os 
import time

# 统计项目代码数量
class TotalCodeLines():
    def __init__(self, basedir,filetype):
        self.basedir = basedir
        self.filelists = []
        self.filetype = filetype
        
    #遍历文件, 递归遍历文件夹中的所有
    def readfile(self, basedir, filetype):
        global filelists
        for parent,dirnames
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python自带的文件读写功能,结合正则表达式来统计Verilog代码行数。以下是一种可能的实现方法: ```python import re def count_verilog_lines(filename): # 打开文件并读取所有内容 with open(filename, "r") as f: content = f.read() # 去除注释 content = re.sub(r"//.*", "", content) # 去除单行注释 content = re.sub(r"/\*.*?\*/", "", content, flags=re.DOTALL) # 去除多行注释 # 按行分割并去除空白字符 lines = [line.strip() for line in content.split("\n")] # 统计代码行数 count = 0 for line in lines: if line and not line.startswith(("module", "endmodule", "package", "endpackage", "function", "endfunction", "task", "endtask", "generate", "endgenerate")): count += 1 # 查找所有的 module 实例化语句 instances = re.findall(r"(?<=\bmodule\s)\w+\b.*?;", content) # 计算每个模块实例化的行数并加入总行数 for instance in instances: module_name = instance.split()[0] module_lines = count_verilog_lines(module_name + ".v") count += module_lines # 查找所有的 include 语句 includes = re.findall(r"\`include\s+\"(.*?)\"", content) # 计算每个 included 文件的行数并加入总行数 for include in includes: include_lines = count_verilog_lines(include) count += include_lines return count ``` 这个函数首先打开指定的文件并读取全部内容。然后使用正则表达式去除注释,并按行分割并去除空白字符。接下来,它统计不在模块定义、包定义、函数定义、任务定义、generate块等特殊语句内的代码行数。然后,它查找每个模块实例化语句,并递归计算每个模块的行数,将其加入总行数。最后,它查找每个 include 语句,并递归计算每个 included 文件的行数,将其加入总行数。最终返回总行数。 需要注意的是,这个函数假设所有的模块都定义在单独的文件,并且文件名与模块名相同(即模块名加上 .v 后缀)。如果实际情况不符合这个假设,需要相应地修改代码。此外,这个函数只能处理单个文件,如果需要统计整个项目行数,需要在调用这个函数时递归遍历整个项目目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值