python写的统计PYTHON文件的(代码行数,空行数,注释行数)小程序

#-*-coding:utf-8-*-

import os

if __name__=='__main__':
    codeline=0
    expline=0
    blankline=0

    filename=raw_input('Please input the  file name:')

    fi=open(filename)
    while fi.tell()!=os.path.getsize(filename):
        temp=fi.readline()
        if temp.startswith('#'):
            expline+=1
        elif temp=='/n':
            blankline+=1
        elif temp.startswith('"""'):
            expline+=1
            while True:
                temp=fi.readline()
                expline+=1
                if temp.endswith('"""/n'):
                    break           
        else:
            codeline+=1
    else:
        print 'the codeline is:'+str(codeline)
        print 'the expline is:'+str(expline)
        print 'the blank line is:'+str(blankline)

 

python中提供了很便捷的方法来判断两个文件的内容是否相同,只要两行代码:
>>>import filecmp
>>>filecmp.cmp(r'e:/1.txt',r'e:/2.txt')
如果两个文件相同,会输出True,否则会输出false。

可以使用以下代码统计 Python代码文件中的代码行数,去除注释空行: ```python import os def count_code_lines(file_path): lines = 0 with open(file_path, 'r') as f: is_comment = False for line in f: line = line.strip() if line.startswith('"""') or line.startswith("'''"): is_comment = not is_comment elif is_comment or line.startswith('#') or not line: continue else: lines += 1 return lines # 指定目录 dir_path = 'path/to/directory' # 遍历目录下所有 py 文件统计代码行数 total_lines = 0 for root, dirs, files in os.walk(dir_path): for file in files: if file.endswith('.py'): file_path = os.path.join(root, file) lines = count_code_lines(file_path) total_lines += lines print(f'{file_path} : {lines}') print(f'Total lines of code: {total_lines}') ``` 代码解释: 1. 定义一个函 `count_code_lines`,输入为文件路径,输出为该文件中的代码行数。 2. 在 `count_code_lines` 函中,使用 `with open` 打开文件,并遍历文件中的每一行。 3. 使用一个布尔变量 `is_comment` 来记录当前是否在注释中,如果在注释中,则跳过当前行。 4. 使用 `strip` 方法去除每行开头和结尾的空格和换行符。 5. 判断当前行是否是注释空行,如果是,则跳过当前行,否则代码行数加一。 6. 在主程序中,使用 `os.walk` 遍历指定目录下的所有文件和子目录。 7. 对于每个以 `.py` 结尾的文件,调用 `count_code_lines` 函统计代码行数,并累加到总行数中。 8. 输出每个文件代码行数和总行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值