当我们在写程序时,有时需要统计代码的行数来评估工作量或者查看一些代码库的大小。Python提供了多种方法来计算代码行数,下面介绍两种常用的方法。
使用os模块和递归函数
import os
def count_lines(path):
count = 0
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.py'):
with open(os.path.join(root, file), 'r') as f:
for line in f:
if line.strip() and not line.startswith('#'):
count += 1
return count
print(count_lines('.'))
上述代码使用了os模块的walk函数遍历指定目录下的所有文件和文件夹。对于每个文件,使用with语句打开并逐行读取文件内容,判断其中是否包含有效代码行(即非空且不是注释),如果是,则计数器加1。返回计数器的结果。
使用subprocess模块和wc命令
import subprocess
def count_lines(path):
output = subprocess.check_output(['wc', '-l', f'{path}/**/*.py'], shell=True)
result = output.decode('utf-8').strip().split()[0]
return int(result)
print(count_lines('.'))
上述代码使用了subprocess模块执行系统命令,并将命令的输出结果转换成Python字符串进行处理。具体地,使用check_output函数执行wc -l命令,该命令可以统计指定文件中的行数。由于check_output函数默认返回bytes类型的结果,所以需要使用decode方法将其转换成utf-8编码的字符串。使用strip和split方法分离出命令输出结果中的数字,并将其转换为整数。
通过上述两种方法我们可以很方便地统计Python程序的代码行数,对代码质量和工作量评估都有一定的帮助。