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

2024-04-19 23:09:05 发布

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

我需要比较一下这两本书的内容焦油.gz如果文件已更新、更改或删除,则将文件保存到。你知道吗

命令建议在 Diff between two .tar.gz file lists in liunx如果我可以得到一个列表或者一些我可以迭代并运行regex的结果,那会很有帮助。你知道吗

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

我试过使用subprocess,但我不知道如何翻译我学到的“<;”是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)

它开始触发前两个命令的标准输出之一,并在

:File name too long

我还尝试使用(显然)unforgivable shell=True来运行整个命令,但这给了我:

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

我想使用python2.7和/或不使用python3.X来检查外部库,但如果需要python3.X,或者用完全不同的方法来检查两个tar文件中的文件是否为任何人所知,我很乐意听到:)


Tags: 文件命令stdoutdifftarsortfile1results