我正在处理一个MS批处理(***.bat)包装器,它调用一个当前具有5个参数值的python脚本。
我希望将sys.argv(6)
提供给python脚本,以便可以选择性地“跳过”其中的某个函数。
用批处理语言来说,我想绕过一个if %6=yes goto :function2 else goto :function1
风格的子例程,只是它不是批处理,而是python。
任何意见都是非常感谢的。
提前感谢!
发布于 2016-06-28 10:34:12
将参数传递给脚本,例如在bat文件中:
python myscript.py %6
然后在myscript.py
中
import sys
def function1():
pass
def function2():
pass
if __name__ == "__main__":
if len(sys.argv) > 1 and sys.argv[1] == 'yes':
function2()
else:
function1()
发布于 2016-06-28 10:49:29
最好开始使用python argparser。它提供了许多功能、帮助和描述:
sample.py:
import argparse
def function1():
print("Function 1")
def function2():
print("Function 2")
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='<Program Description>')
parser.add_argument('-f1', help='Execute function1', default=False, action="store_true")
parser.add_argument('-f2', help='Execute function2', default=False, action="store_true")
args = parser.parse_args()
if args.f1:
function1()
elif args.f2:
function2()
else:
print("Please specify the arguments. Use \"python sample.py -h\" for help")
使用:
#For function1:
python3 sample.py -f1
#For function2:
python3 sample.py -f2
#For help:
python3 sample.py -h
编辑:针对您的问题的:
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='<Program Description>')
parser.add_argument('-e', '--exec', help="Exec Parameter", required=True)
args = vars(parser.parse_args())
if str(args['exec']).__eq__('yes'):
function1()
else:
function2()
如需更多信息,请访问python argparse tutorial。
https://stackoverflow.com/questions/38065852
复制相似问题