仅当diff有内容时输出

2024-04-26 08:11:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个python脚本来做一些事情,然后在最后我对两个文件进行了区分并将其写入一个文件。这是做了大约100个文件,我得到100个输出,其中大部分是空的。我只想在diff有一些输出时才写输出。我在做这样的事

    subprocess.Popen("diff -c -p sample1"+i+".txt sample"+i+".txt > output"+1+".txt",shell=True)

这将创建大量空输出*.txt文件。我只希望在有差异时才输出。是否缺少某些选项。你知道吗


Tags: 文件sampletxt脚本trueoutput选项diff
3条回答

这也许是一个bash问题,而不是Python问题——尽管也可以参见Fred Clausen关于如何将其转化为Python问题的答案;-)

在超级用户的this thread中有一些答案-总之,一些可能性是:

  • 创建一个检测空输入的bash脚本,并从python调用它
  • 使用ifne命令(当且仅当stdin不为空时运行以下命令)
  • 使用xargs -r接受空输入

Popen创建一个进程对象-您可以通信()(进程对象方法!)到。添加标准=子进程管道到Popen调用,并删除输出重定向。 或者你可以用子流程检查输出()

在执行外部diff命令之前,我建议使用difflib这样的库。这将允许您决定何时或何时输出差异。Popen生成的子shell将始终创建一个文件,因为您正在使用重定向。你知道吗

相关问题 更多 >