0

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

  • 读取完整的 shell 命令作为我的 python 脚本的参数,例如:python myPythonScript.py ls -Fl
  • 当我愿意时在我的 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 -Fl,,python myScript.py git pull等等python myScript rm -rf *......

4

2 回答 2

1

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

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

用于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:])
于 2016-12-20T09:52:37.253 回答
1

OptionParser当您自己的程序想要处理参数时很有用:它可以帮助您将字符串参数转换为布尔值或整数或列表项或其他任何内容。在您的情况下,您只想将参数传递给您正在调用的程序,所以不要打扰OptionParser. 只需传递sys.argv.

subprocess.call(sys.argv[1:])
于 2016-12-20T09:56:58.460 回答