将两个输出重定向到一个子进程diff命令。

时间:2017-09-13 04:09:07

标签: python linux python-2.7 subprocess tar

如果文件已被更新,更改或删除,我需要比较两个tar.gz文件的内容。

建议的命令 Diff between two .tar.gz file lists in liunx如果我可以将结果作为列表或我可以迭代并运行正则表达式,那么会有所帮助。

diff <(tar -tvf 1.tar.gz | sort) <(tar -tvf 2.tar.gz | sort)

我尝试使用子进程,但我不确定如何翻译“&lt;”我学到的是tar和sort的输出重定向。我尝试过像

这样的事情
file1 = subprocess.Popen(('tar', '-tvf', 1.tar.gz), stdout=subprocess.PIPE)
results_1 = file1.communicate()[0]
file2 = subprocess.Popen(('tar', '-tvf', 2.tar.gz), stdout=subprocess.PIPE)
results_2 = file1.communicate()[0]

diff = subprocess.Popen(['diff',results_1,results_2], stdout=subprocess.PIPE)

开始引用前两个命令中的一个stdouts并以

结束
:File name too long

我还尝试使用(显然)不可原谅的shell = True运行整个命令,但这给了我:

/bin/sh: -c: line 0: syntax error near unexpected token `('

我想使用python 2.7和/或不使用异国情调的外部库,但如果需要python 3.X或完全不同的方式来检查两个tar文件中的文件是否为任何人所知,我会喜欢听啊:)

0 个答案:

没有答案