我需要使用标准UNIXdiff命令和python子流程模块创建一个diff文件。问题是我必须在不创建临时文件的情况下比较文件和流。我曾想过通过os.mkfifo方法使用命名管道,但没有得到任何好的结果。请你写一个简单的例子来说明如何解决这个问题好吗?我试着这样做:
fifo = 'pipe'
os.mkfifo(fifo)
op = popen('cat ', fifo)
print >> open(fifo, 'w'), output
os.unlink(fifo)
proc = Popen(['diff', '-u', dumpfile], stdin=op, stdout=PIPE)
但似乎diff
看不到第二个参数。
您也许可以考虑使用difflibpython模块(我在这里链接到了一个示例),并创建一些直接生成和打印diff的内容,而不是依赖于
diff
。difflib中的各种函数方法可以接收字符缓冲区,这些字符缓冲区可以被处理成各种类型的diff。或者,您可以构造一个shell管道,并像这样使用进程替换
有关详细信息,请查看http://tldp.org/LDP/abs/html/process-sub.html
可以使用“-”作为
diff
的参数来表示stdin
。相关问题 更多 >
编程相关推荐