Python管道和命令行参数

时间:2012-04-02 10:20:39

标签: python pipe command-line-arguments sys

我是python的新手,我需要弄清楚我的工作中的脚本。

我的脚本解析一些exe文件的输出(我们称之为Mywork.exe),它处理另一个二进制文件(让我们称之为processedBinary)。现在,我的scrpit在某些时候想要获取一个processedBinary的名称并对它进行objdump。我可以看到前一位作者(对我来说无法访问)使用此行sys.argv [1]来获取processedBinary的名称。我的脚本处理MyWork.exe的输出。到目前为止,我成功调用脚本的唯一方法是运行:

MyWork.exe processedBinary | / usr / bin / python ./myScript.py -v

然后我的脚本正确处理输出,但它根本没有获取processedBinary的名称(而是sys.argv [1]实际上是“-v”)。所以,我有几个问题:

1)是否有更好的方法来运行我的脚本,以便sys.argv [1]是processedBinary的名称? 2)如果上一个问题的答案是否定的,是否有办法以更好的方式获取processedBinary的名称? 3)你对脚本的实现/调用有什么更好的建议吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以从Python脚本调用MyWork.exe,并将processedBinary的名称传递给该脚本。

import subprocess
import sys
command = 'MyWork.exe %s' % (sys.argv[1])
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.wait()
output = (proc.stdout.read(), proc.stderr.read())

输出现在是MyWork.exe的stdout和stderr的元组