如何让python脚本使用和不使用参数(默认参数)?

时间:2017-05-10 11:44:32

标签: python python-2.7 argparse

无论何时传递参数,我都试图让Python脚本工作。

目标是让脚本正常运行为" MyPython.py"和" MyPython.py 5"应该可以工作。如果没有传递参数,则参数应为0。

变量imported_number默认情况下应为0,但如果检测到参数,则应该使用用户已经传递的任何数字。

import argparse

imported_number=0

parser = argparse.ArgumentParser()
parser.add_argument("opt_number", type=int, help="Provide a number please")
args = parser.parse_args()

if args.opt_number > 0:
    imported_number=args.opt_number
    print "You provided me with the number " + imported_number
    print "You provided me with the number {}".format(args.opt_number)
else:
    print "You did not provide me with any number. Taking the default value, which is " + imported_number

很遗憾,我收到了error: too few arguments错误消息。

有没有人知道完成此任务的好方法和自动方法?我很感激。

2 个答案:

答案 0 :(得分:3)

使用nargsdefaultconst,如下所示:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("opt_number", type=int, help="Provide a number please",
                    nargs='?', default=0, const=0)
args = parser.parse_args()
print(args)

当没有提供参数时,您的opt_number将被初始化为0.

答案 1 :(得分:3)

您可以使脚本成为接受和传递给它的参数的函数。

import sys

def your_function(imported_number=0):
    #your code
if __name__=='__main__':
    try:
        imported_number=sys.argv[1]
    except:
        pass
    your_function(imported_number)