我正在用Python编写一个小工具来计算源代码行,注释行和空行/空行。
实际上我可以计算所有的行并且都是空的,但我很难计算评论,有人可以帮我吗?我是这个郎的新手。
def file_len(pFile):
filled,blanks = 0
for line in open(pFile).readlines():
if line.strip():
filled += 1
if not line.strip():
blanks += 1
return filled, blanks
url = 'C:/blablablabla/littlesource.js'
f = open(url, 'r')
k = f.read()
print(k)
source_properties = file_len(url)
print('Code: ',source_properties[0],'Empty: ',source_properties[1])
f.close()
对于“代码”我实际上意味着所有来源都不是空行,所以我不能做“注释行=(所有行) - (源代码行) - (空行/空行)”按照jkdev的建议...
答案 0 :(得分:0)
问题有时是代码//但它不是评论。
例如:
url = "http://helloworld/"
如果我搜索//
,我会错误地计算此行。
首先,我从代码中删除所有字符串
code_without_strings = re.sub("""("[^"]+"|'[^']+')""", "", code)
之后我找到所有//
(每行只有一次)并计算其数量
len(re.findall("(//.*(\n|$))", code_without_strings))
如果您还想考虑/* */
,可能会有点复杂。
len(re.findall("(/\*.*?\*/", code_without_strings, flags=re.S))
但是您必须考虑//
位于/* */
块内的情况。您可以通过首先计算多行注释的数量,然后删除它们(与我们对字符串的操作相同)然后计算单行注释