如何检查是否只有一个 argparse 参数存在
How to check if only one of the argparse parameters exists
如代码中,有两个parser.add_argument --date 和--type。如果 --type 存在,我想使用另一个函数。如何检查 --type 是否存在?
我试过了,但失败了
parser = argparse.ArgumentParser()
parser.add_argument('--date', default=str(startDate))
parser.add_argument('--type', required=False)
args = parser.parse_args()
if len(args.type) > 0:
dataFrame = spDataFrame[nospDataFrame['Type'] == args.type].reset_index(drop=True)
else:
campDataframe = sp_camp_mapping(startDate, endDate, keyword, driver, filePath)
sp_mapping(campDataframe, driver, startDate)
ERROR:None type has no len
如果未传递 --type
参数,则 args 中的键 type
的值为 None
并且:
len(None)
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.1\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<input>", line 1, in <module>
TypeError: object of type 'NoneType' has no len()
您可以直接检查 args.type
的值:
import argparse
startDate = '20210209'
parser = argparse.ArgumentParser()
parser.add_argument('--date', default=str(startDate))
parser.add_argument('--type', required=False)
args = parser.parse_args()
if args.type:
print("Type parameter was passed: {}".format(args.type))
else:
print("Type parameter wasn't passed: {}".format(args.type))
注:if args.type
等同于if args.type is not None:
如代码中,有两个parser.add_argument --date 和--type。如果 --type 存在,我想使用另一个函数。如何检查 --type 是否存在? 我试过了,但失败了
parser = argparse.ArgumentParser()
parser.add_argument('--date', default=str(startDate))
parser.add_argument('--type', required=False)
args = parser.parse_args()
if len(args.type) > 0:
dataFrame = spDataFrame[nospDataFrame['Type'] == args.type].reset_index(drop=True)
else:
campDataframe = sp_camp_mapping(startDate, endDate, keyword, driver, filePath)
sp_mapping(campDataframe, driver, startDate)
ERROR:None type has no len
如果未传递 --type
参数,则 args 中的键 type
的值为 None
并且:
len(None)
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.2.1\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<input>", line 1, in <module>
TypeError: object of type 'NoneType' has no len()
您可以直接检查 args.type
的值:
import argparse
startDate = '20210209'
parser = argparse.ArgumentParser()
parser.add_argument('--date', default=str(startDate))
parser.add_argument('--type', required=False)
args = parser.parse_args()
if args.type:
print("Type parameter was passed: {}".format(args.type))
else:
print("Type parameter wasn't passed: {}".format(args.type))
注:if args.type
等同于if args.type is not None: