如何使 python 脚本在有参数和无参数(默认参数)的情况下工作?

How to make a python script work with and without arguments (default arguments)?

我正在尝试让 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 错误消息。

有谁知道完成这项任务的好的自动化方法吗?非常感谢。

像这样使用 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。

您可以使您的脚本成为一个函数,接受并传递给它的参数。

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)