使用python转发shell命令
更确切地说,我想做的是:使用python转发shell命令,python,shell,subprocess,optionparser,Python,Shell,Subprocess,Optionparser,更确切地说,我想做的是: 阅读完整的shell命令作为python脚本的参数,如:python myPythonScript.py ls-Fl 当我想在python脚本中调用该命令时(在某些文件夹上进行一些循环并应用该命令等…) 我试过这个: import subprocess from optparse import OptionParser from subprocess import call def execCommand(cmd): call(cmd) if _
- 阅读完整的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
,但我不知道如何添加选项。我知道我可以使用解析器。添加_option
,但不知道如何使其适用于所有选项,因为我不想只提供特定选项,而是根据我正在运行的命令提供所有可能的选项。
我可以使用类似于解析器的东西吗?添加选项('-*')
?那么,我如何解析选项并使用其选项调用命令呢
编辑
我需要我的程序解析作为参数传递的所有类型的命令:
python myScript.py ls-Fl
,python myScript.py git pull
,python myScript rm-rf*
等…根据您的程序对命令行参数的依赖程度,您可以使用简单的路径
读取命令行参数的简单方法
使用sys
获取python命令行的所有参数
import sys
print sys.argv[1:]
然后您可以使用子流程执行它
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:])
根据程序对命令行参数的依赖程度,可以使用简单的路由
读取命令行参数的简单方法
使用sys
获取python命令行的所有参数
import sys
print sys.argv[1:]
然后您可以使用子流程执行它
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:])
OptionParser
在您自己的程序想要处理参数时非常有用:它可以帮助您将字符串参数转换为布尔值、整数、列表项或其他形式。在您的例子中,您只想将参数传递给正在调用的程序,因此不必麻烦使用OptionParser
。只需传递sys.argv
中给出的参数即可
subprocess.call(sys.argv[1:])
当我知道要调用的选项类型时,我需要我的程序解析作为参数传递的所有类型的命令:python myScript.py ls-Fl
,python myScript.py git pull
,python myScript rm-rf*
etc…在正文中添加了带有“subprocess”的示例。你知道为什么这不能与python myScript.py cd一起使用吗?
例如,当我知道要调用的选项类型时,这一点适用,我需要我的程序解析作为参数传递的所有类型的命令:python myScript.py ls-Fl
,python myScript.py git pull
,python myScript rm-rf*
etc…在正文中添加了带有“subprocess”的示例。你知道这为什么不能与python myScript.py cd一起使用吗?
举个例子。感谢我所需要的,你有关于sys的一些文档,因为我可能想稍微操纵一下参数。哦,这是我第一次使用python,我刚刚意识到sys是解读论点的基本方式。非常感谢。我用python myScript.py cd-
尝试了该代码,但它返回了一个错误。你知道为什么吗?感谢我所需要的,你有一些关于sys的文档,因为我可能想操纵一些参数。哦,这是我第一次使用python,我刚刚意识到sys是读取参数的基本方式。非常感谢。我用python myScript.py cd-
尝试了该代码,但它返回了一个错误。你知道为什么吗?