使用 python 转发 shell 命令

Forward a shell command using python

所以更准确地说,我想做的是:

我试过了:

import subprocess
from optparse import OptionParser
from subprocess import call
def execCommand(cmd):
        call(cmd)


if __name__ == '__main__':
        parser = OptionParser()
        (options,args) = parser.parse_args()
        print args
        execCommand(args)

结果是现在可以pythonmyPythonScript.py ls ,但是不知道怎么加选项。我知道我可以使用 parser.add_option ,但不知道如何让它适用于所有选项,因为我不想只使特定选项可用,但所有可能的选项取决于我的命令 运行. 我可以使用 parser.add_option('-*') 之类的东西吗?我怎样才能解析这些选项并用它的选项调用命令?

编辑

我需要我的程序来解析作为参数传递的所有类型的命令:python myScript.py ls -Flpython myScript.py git pullpython myScript rm -rf * 等...

根据您的程序对命令行参数的依赖程度,您可以使用简单的路由。

读取命令行参数的简单方法

使用sys获取python命令行的所有参数。

import sys
print  sys.argv[1:]

然后就可以用subprocess来执行了

from subprocess import call
# e.g. call(["ls", "-l"])
call(sys.argv[1:])

下面的示例对我来说效果很好。

import sys 
from subprocess import call
print(sys.argv[1:])
call(sys.argv[1:])
当您自己的程序想要处理参数时,

OptionParser 很有用:它可以帮助您将字符串参数转换为布尔值或整数或列表项或其他任何内容。在你的例子中,你只是想将参数传递给你正在调用的程序,所以不要为 OptionParser 而烦恼。只需传递 sys.argv.

中给出的参数
subprocess.call(sys.argv[1:])