首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据参数值“跳过”多功能python脚本中的各个函数

如何根据参数值“跳过”多功能python脚本中的各个函数
EN

Stack Overflow用户
提问于 2016-06-28 09:50:10
回答 2查看 66关注 0票数 1

我正在处理一个MS批处理(***.bat)包装器,它调用一个当前具有5个参数值的python脚本。

我希望将sys.argv(6)提供给python脚本,以便可以选择性地“跳过”其中的某个函数。

用批处理语言来说,我想绕过一个if %6=yes goto :function2 else goto :function1风格的子例程,只是它不是批处理,而是python。

任何意见都是非常感谢的。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2016-06-28 10:34:12

将参数传递给脚本,例如在bat文件中:

代码语言:javascript
运行
复制
python myscript.py %6

然后在myscript.py

代码语言:javascript
运行
复制
import sys

def function1():
    pass

def function2():
    pass

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == 'yes':
        function2()
    else:
        function1()
票数 1
EN

Stack Overflow用户

发布于 2016-06-28 10:49:29

最好开始使用python argparser。它提供了许多功能、帮助和描述:

sample.py:

代码语言:javascript
运行
复制
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")

使用:

代码语言:javascript
运行
复制
#For function1:
python3 sample.py -f1

#For function2:
python3 sample.py -f2

#For help:
python3 sample.py -h

编辑:针对您的问题的

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38065852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档