阅读 python 时忽略文本文件中的多行注释
ignore multiline comments in text file when reading in python
我正在尝试使用 python 脚本计算目录中多个文本文件中的代码行数。我想出了以下方法,但只有当注释在一行而不是多行时才有效。有办法吗?
def remove_comments(line):
if line.startswith('/*') or line.endsswith('*/'):
return 0
else:
return 1
count = sum(remove_comments(line) for line in f if line.strip())
一个肮脏的 hack 可能是使用全局变量:
with open("test", 'r') as f_in:
f = f_in.readlines()
is_in_comment = False
def remove_comments(line):
global is_in_comment
line = line.strip()
if line.startswith('/*'):
is_in_comment = True
return 0
elif line.endswith('*/'):
is_in_comment = False
return 0
return 0 if is_in_comment else 1
count = sum(remove_comments(line) for line in f if line.strip())
不过,这假设您不能在没有之前的 /*
的情况下获得 */
。此代码 returns 3 用于以下 test
文件:
That is one line
Another
/* Comment
Other comment
End comment */
Final line, not a comment
我正在尝试使用 python 脚本计算目录中多个文本文件中的代码行数。我想出了以下方法,但只有当注释在一行而不是多行时才有效。有办法吗?
def remove_comments(line):
if line.startswith('/*') or line.endsswith('*/'):
return 0
else:
return 1
count = sum(remove_comments(line) for line in f if line.strip())
一个肮脏的 hack 可能是使用全局变量:
with open("test", 'r') as f_in:
f = f_in.readlines()
is_in_comment = False
def remove_comments(line):
global is_in_comment
line = line.strip()
if line.startswith('/*'):
is_in_comment = True
return 0
elif line.endswith('*/'):
is_in_comment = False
return 0
return 0 if is_in_comment else 1
count = sum(remove_comments(line) for line in f if line.strip())
不过,这假设您不能在没有之前的 /*
的情况下获得 */
。此代码 returns 3 用于以下 test
文件:
That is one line
Another
/* Comment
Other comment
End comment */
Final line, not a comment