我正在编写一个python脚本,它将遍历代码文件,注释掉导入,构建程序,并确定是否实际使用了每个导入。
我让每个组件都工作,但由于某种原因,当我将它们组合起来时,我在回写代码文件时遇到了一个非常奇怪的问题。似乎每当我使用subprocess.check_output构建代码时,文件的写命令似乎总是停止在第315行周围写入而不继续在文件中。我认为这是一些竞争条件,但每次运行时它总是会在同一条线上结束。
我也尝试过使用os.system()并得到相同的结果。我不是一个python编码器,所以也许有一些显而易见的IO我不知道了吗?
部分代码:
with open(file, 'r+') as f:
content = f.read()
f.seek(0)
f.truncate()
lines = re.split("\r?\n", content);
for index, line in enumerate(lines):
result = regex.search(line)
if (result):
commentLine = '//' + line + ' //Not Needed'
lines[index] = commentLine
f.seek(0)
f.truncate()
for writeLine in lines:
f.write("%s\n" % writeLine)
returnValue = 0;
try:
returnValue = subprocess.check_output(['/usr/bin/xcodebuild', '-workspace', 'path_to_my_workspace' ,'-configuration', 'Debug', '-scheme', 'my_scheme'], stderr=subprocess.STDOUT)
except:
returnValue = 1
if (returnValue == 0): #Build succeeded!
print "Build succeeded!"
else:#Build failed
print "Build failed"
lines[index] = line
f.seek(0)
f.truncate()
for writeLine in lines:
f.write("%s\n" % writeLine)
操作实例: 打开一个文件, 逐行拆分搜索匹配#import等的正则表达式, 评论这一行, 试图建立它, 如果成功,请留下评论, 如果失败,删除评论, 重复每个正则表达式匹配