我正在编写一个python脚本来做一些事情然后最后我做了两个文件的差异并将其写入文件。这是为100个文件完成的,我得到100个输出,其中大部分是空的。我只想在diff有一些输出的情况下写输出。我正在做这样的事情
subprocess.Popen("diff -c -p sample1"+i+".txt sample"+i+".txt > output"+1+".txt",shell=True)
这会创建大量的空输出* .txt文件。我只想在有差异时才输出。有什么选择我不见了。
答案 0 :(得分:0)
排除外部diff命令的Intead我建议使用difflib之类的库。这将允许您决定何时或何时不输出差异。由于您使用重定向,Popen生成的子shell将始终创建一个文件。
答案 1 :(得分:0)
这可能是一个bash问题,而不是Python问题 - 尽管请参阅Fred Clausen关于如何将其变成Python问题的答案; - )
在SuperUser的this thread中有一些答案 - 总之,有些可能性是:
xargs -r
吞下空输入答案 2 :(得分:0)
Popen 创建一个流程对象 - 您可以通信()(流程对象方法!)。将 stdout = subrpocess.PIPE 添加到Popen调用,并删除输出重定向。 或者您可以使用subprocess.check_output()