我使用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)
答案 0 :(得分:1)
正如所写,如果你不给它2个论点,parser
会抱怨。试试吧!
至于检查参数是否有效 - 文件存在,可以打开等 - 可以使用正常的Python错误检查和消息。 argparse
是一个解析器,而不是一个完整的编程脚本。
答案 1 :(得分:0)
您可以检查参数的数量,然后检查文件是否存在。
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()
特定后缀等。