Python 索引器读取源代码文件夹中的注释
我正在编写一个程序,以浏览通过列表“队列”传入的文件列表 我试图逐行浏览文件,只选择单行注释或多行注释中的文本。(“//”和“/**/”->可能在多行上) 我不明白为什么我的程序不去下一行,而它应该去。如果不满足注释结尾指定“终止”,则变量“stepper”将递增 我已经进行了几天的错误测试和修改,但我不确定为什么这不起作用 对不起,代码太草率了Python 索引器读取源代码文件夹中的注释,python,file-io,documentation,indexoutofboundsexception,Python,File Io,Documentation,Indexoutofboundsexception,我正在编写一个程序,以浏览通过列表“队列”传入的文件列表 我试图逐行浏览文件,只选择单行注释或多行注释中的文本。(“//”和“/**/”->可能在多行上) 我不明白为什么我的程序不去下一行,而它应该去。如果不满足注释结尾指定“终止”,则变量“stepper”将递增 我已经进行了几天的错误测试和修改,但我不确定为什么这不起作用 对不起,代码太草率了 def main(queue): for item in queue: with open("output.txt", "a"
def main(queue):
for item in queue:
with open("output.txt", "a") as out_file:
out_file.write(str("\t<FILE: " + item.split("\\")[len(item.split()) - 1] + ">"))
java_file = list(open(item, "r"))
for line in range(0, len(java_file)):
for i in range(0, len(java_file[line])):
multi_builder = []
single_lines = []
if (java_file[line][i] == "/" and java_file[line][i + 1] == "/"):
single_lines.append(java_file[line][i:])
if (java_file[line][i] == "/" and java_file[line][i + 1] == "*"):
stepper = 0
terminated = False
while not terminated:
for char in range(0, len(java_file[line + stepper])):
if not java_file[line][char].strip() == "":
print (java_file[line][char])
if (java_file[line][char] == "*" and java_file[line][char + 1] == "/"):
if stepper == 0:
multi_builder.append(java_file[line][i:char + 1])
multi_builder.append(java_file[line][:char + 1])
terminated = True
else:
multi_builder.append(java_file[line])
stepper += 1
def main(队列):
对于队列中的项目:
打开(“output.txt”、“a”)作为输出文件:
out\u file.write(str(“\t”))
java_文件=列表(打开(项目“r”))
对于范围(0,len(java_文件))中的行:
对于范围(0,len(java_文件[line])中的i:
multi_builder=[]
单_行=[]
如果(java_文件[line][i]==“/”和java_文件[line][i+1]==“/”):
追加(java_文件[line][i:])
如果(java_文件[line][i]==“/”和java_文件[line][i+1]==“*”):
步进电机=0
终止=错误
虽然没有终止:
对于范围(0,len(java_文件[line+stepper])中的字符:
如果不是java_文件[line][char].strip()==“”:
打印(java_文件[line][char])
如果(java_文件[line][char]=“*”和java_文件[line][char+1]=”/”:
如果步进器==0:
multi_builder.append(java_文件[line][i:char+1])
multi_builder.append(java_文件[line][:char+1])
终止=真
其他:
multi_builder.append(java_文件[line])
步进电机+=1
我不确定您是否对另一种方法感兴趣,而不是帮助调试您的方法,但使用会使此任务更容易:
import re
singleLinePattern = re.compile("//.*$", flags=re.MULTILINE+re.DOTALL)
multiLinePattern = re.compile("/\*.*?\*/", flags=re.MULTILINE+re.DOTALL)
def main(queue):
for item in queue:
with open("output.txt", "a") as out_file:
out_file.write(str("\t<FILE: " + item.split("\\")[len(item.split()) - 1] + ">"))
with open(item, "r") as f:
java_file = f.read()
print "singles:", singleLinePattern.findall(java_file)
print "multis:", multiLinePattern.findall(java_file)
# You can write the results to the output file here.
重新导入
singleLinePattern=re.compile(“/.*$”,flags=re.MULTILINE+re.DOTALL)
multiLinePattern=re.compile(“/\*.*?\*/”,flags=re.MULTILINE+re.DOTALL)
def主(队列):
对于队列中的项目:
打开(“output.txt”、“a”)作为输出文件:
out\u file.write(str(“\t”))
未结项(项目“r”)为f:
java_file=f.read()
打印“singles:”,singleLinePattern.findall(java_文件)
打印“multis:”,multiliepattern.findall(java_文件)
#您可以在此处将结果写入输出文件。
将堆栈跟踪包含在问题中会有帮助。您不清楚问题出在哪里。此外,我们可能会帮助您找到解决问题的方法,但看起来您正在重新发明轮子。是为这类事情设计的。