我需要根据参数从另一个脚本调用不同的python scipts。
主要的scipt是通过pasiing parameters
从另一个脚本调用的EX:
----runner.py invokes----
python testfolder/subrun.py -s script1 -d xyz -l abc -a test1
python testfolder/subrun.py -s script2 -d xyz -l abc -a test2 -e test@test.com -u myid
取决于参数s我必须调用script1.py
或script2.py
如何根据参数subrun.py
解析-s
中的其他参数。参数的数量取决于script1或script2
答案 0 :(得分:0)
查看https://docs.python.org/2/library/argparse.html
import argparse
parser = argparse.ArgumentParser(description='script parser')
parser.add_argument('-s', "--script_name", help='specify script')
args = parser.parse_args()
if(args.script_name == "script1"):
#load script 1
else
#load script 2
答案 1 :(得分:0)
基于詹姆斯的代码,实际上缺少一部分,即其余的参数。我认为如果没有这个,它很可能会因为未知的论点而失败。
import argparse
parser = argparse.ArgumentParser(description='script parser')
parser.add_argument('-s', "--script_name", help='specify script')
parser.add_argument('script_args', nargs=argparse.REMAINDER)
parsed_args = parser.parse_args()
# parsed_args.script_args now contains a list of the rest of the args
# that you can pass on to whatever script that was chosen.
if(parsed_args.script_name == "script1"):
#load script 1
else
#load script 2
答案 2 :(得分:0)
我喜欢参数解析的功能样式。创建一个main方法,它将argv作为参数并递归地解析参数。
import sys
if __name__=="__main__":
main(sys.argv)
def main(argv):
if len(argv)==0:
start program
elif argv[0]=="-s":
handle script name from argv[1]
main(argv[2:])
elif argv[0]=="-d":
handle d arg from argv[1]
main(argv[2:])
else:
sys.stderr.write("unrecognized command line option: " + argv[0] + "\n")
exit(1)
答案 3 :(得分:-2)
我只是使用sys.argv,这是一个例子:
import sys
for argument in sys.argv:
if argument == "--debug" or argument == "-d":
#do debug stuff
elif argument == "--help" or argument == "-h":
#do help stuff
elif argument == "--log" or argument == "-l":
#do log stuff
因此,如果您将其作为“test.py -d -h”运行,它会启动并运行调试和帮助,但忽略日志内容。从中您可以根据需要轻松扩展和修改内容。这是我在大型程序开始时经常使用的一个更大的片段。
import sys
for argument in sys.argv:
if argument == "--debug" or argument == "-d":
debug = True
elif argument == "--help" or argument == "-h":
display_help()
elif argument == "--log" or argument == "-l":
logready = True
elif argument == "1":
if logready == True:
logready = False
loglevel = 1
else:
print("Unknown argument: %s" % argument)
usage()
elif argument == "2":
if logready == True:
logready = False
loglevel = 2
else:
print("Unknown argument: %s" % argument)
usage()
elif argument == "3":
if logready == True:
logready = False
loglevel = 3
else:
print("Unknown argument: %s" % argument)
usage()
elif argument == "4":
if logready == True:
logready = False
loglevel = 4
else:
print("Unknown argument: %s" % argument)
display_help()
正如您所看到的,它允许人们在启动时指定他们是否需要调试模式,要使用的日志记录级别或显示帮助。如果有人输入未识别的参数,则默认显示帮助。