IO + subprocess.check_output迭代打破文件写入

时间:2014-02-24 20:55:25

标签: python io subprocess

我正在编写一个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等的正则表达式, 评论这一行, 试图建立它, 如果成功,请留下评论, 如果失败,删除评论, 重复每个正则表达式匹配

0 个答案:

没有答案