在 argparse 中定义参数个数
Define the number of arguments in argparse
我正在使用 argparse
向我的脚本传递两个不同的参数(它们实际上是两个文件:一个图像和一个 json 文件)并使用它们来初始化我的实例。这行得通。但是,如果我想处理我传递了错误数量的参数(少于两个)或者两个参数(两个文件)不存在的情况怎么办?
parser = argparse.ArgumentParser(description='MyAgonism')
parser.add_argument('image')
parser.add_argument('json')
args = parser.parse_args()
MyAgonism = board(args.json, args.image)
可以查看参数个数,然后查看文件是否存在
def validate_num_of_args(args):
return True if len(vars(args)) == 2 else False
def validate_image_arg(imagearg):
has_found_image = True if os.path.exists(imagearg) else False
has_valid_name = True if imagearg.endswith("jpeg") or imagearg.endswith("png") else False
return has_found_image and has_valid_name
def validate_json_arg(jsonarg):
...
...
def validate_args(args):
if validate_num_of_args(args):
jsonarg, imagearg = args.json, args.image
if validate_json_arg(jsonarg) and validate_image_arg(imagearg):
pass
# do your thing
else:
print "Error, invalid json/images files"
else:
print "Error, invalid number of arguments"
如果你的json和图片文件有命名规范,你也可以检查文件名,比如检查文件startswith()
特定的前缀,以及endswith()
特定的后缀等等.
正如所写,如果您不给它 2 个参数,parser
将会抱怨。试试吧!
至于检查参数是否有效 - 文件存在、可以打开等 - 可以使用正常的 Python 错误检查和消息。 argparse
是解析器,不是完整的编程脚本。
我正在使用 argparse
向我的脚本传递两个不同的参数(它们实际上是两个文件:一个图像和一个 json 文件)并使用它们来初始化我的实例。这行得通。但是,如果我想处理我传递了错误数量的参数(少于两个)或者两个参数(两个文件)不存在的情况怎么办?
parser = argparse.ArgumentParser(description='MyAgonism')
parser.add_argument('image')
parser.add_argument('json')
args = parser.parse_args()
MyAgonism = board(args.json, args.image)
可以查看参数个数,然后查看文件是否存在
def validate_num_of_args(args):
return True if len(vars(args)) == 2 else False
def validate_image_arg(imagearg):
has_found_image = True if os.path.exists(imagearg) else False
has_valid_name = True if imagearg.endswith("jpeg") or imagearg.endswith("png") else False
return has_found_image and has_valid_name
def validate_json_arg(jsonarg):
...
...
def validate_args(args):
if validate_num_of_args(args):
jsonarg, imagearg = args.json, args.image
if validate_json_arg(jsonarg) and validate_image_arg(imagearg):
pass
# do your thing
else:
print "Error, invalid json/images files"
else:
print "Error, invalid number of arguments"
如果你的json和图片文件有命名规范,你也可以检查文件名,比如检查文件startswith()
特定的前缀,以及endswith()
特定的后缀等等.
正如所写,如果您不给它 2 个参数,parser
将会抱怨。试试吧!
至于检查参数是否有效 - 文件存在、可以打开等 - 可以使用正常的 Python 错误检查和消息。 argparse
是解析器,不是完整的编程脚本。