获取python中的代码总行数?

问题描述 投票:0回答:2

我只是想知道是否有一种方法可以把所有的代码行都写好,然后将其分配给一个变量,最后在python中打印出来?我正在尝试制定一个玩具基准,我需要计算生产力

python
2个回答
1
投票

这是一个简短的例程,用于计算任何文本文件中的行数,而不仅仅是程序模块。这非常简单——它计算所有行,包括空行和注释。连续行被视为单独的行,一行上的多个语句仅算作一行,等等。为了简单起见,我使用了 f 字符串,因此这需要 Python 3.6 或更高版本。对于其他版本的 Python,可以轻松修改打印行。

def count_lines(filename):
    with open(filename) as f:
        cnt = sum(1 for line in f)
        print(f'There are {cnt} lines in {filename}')

0
投票

如果您想查找模块中code的行数(不包括注释和空行),

ast
模块可以提供帮助。

首先仅迭代树的顶层并存储

tuple
(node.lineno, node.end_lineno)
。使用
set
作为存储容器,避免行号重复,从而防止重复记账。

最后,计算每个 AST 节点的行数为

end - start + 1
,并对结果求和。

例如:

import ast

lines = set()
with open('project.py', 'r') as f:
    module = ast.parse(f.read())
for n in module.body:  # Only traverse the module's top-level.
    if hasattr(n, 'lineno'):
        lines.add((n.lineno, n.end_lineno))
nlines = sum(l - f + 1 for f, l in lines)

print(f'The module has {nlines} lines of code.')

注意:为了让

ast
解析模块,模块必须没有语法错误。

© www.soinside.com 2019 - 2024. All rights reserved.