我有两个选项,可以采用不同的参数。我想要一个特殊的选项,意思是“两者都有特定的标准数据”。这将是与不带参数的操作不同的模式。
parser.add_argument('--use-std-date', '-U', action='store_const',
const=nominal_test_fixture_day, dest='use_date')
parser.add_argument('--use-date', '-u', action='store', type=parse_date,
metavar='%Y-%m-%d', dest='use_date', nargs=1)
parser.add_argument('--write-out-data', '-w', action='store_true')
parser.add_argument('-build-standerd-data', help="This option implies both '--use-std-date', and '--write-out-data'")
在我的梦想世界里,会有这样的东西:
parser.add_argument('--build-standerd-data', implies="-U -w")
如果解析器得到
--build-standerd-data
,它会将"-U -w"
递归回parse_args()
并将结果添加到返回值中。如果它同时获得 --build-standerd-data
和 --use-std-date
(忽略一个?引发错误?),它可能也会做一些聪明的事情。
是否存在这样的东西,或者我只需要在我的主函数中添加一堆 if-else 语句?
要实现所需的行为,您可以通过在解析参数后检查
--build-standard-data
选项是否存在来手动实现它。如果提供,请将 use_date
设置为“nominal_test_fixture_day”并将 write_out_data
设置为 True。
这是一个示例代码片段:
import argparse
parser = argparse.ArgumentParser()
# Add your arguments here
parser.add_argument('--use-std-date', '-U', action='store_const',
const='nominal_test_fixture_day', dest='use_date')
parser.add_argument('--use-date', '-u', action='store', type=str,
metavar='%Y-%m-%d', dest='use_date', nargs=1)
parser.add_argument('--write-out-data', '-w', action='store_true')
parser.add_argument('--build-standard-data', action='store_true',
help="This option implies both '--use-std-date' and '--write-out-data'")
args = parser.parse_args()
# Check if --build-standard-data is provided
if args.build_standard_data:
args.use_date = 'nominal_test_fixture_day'
args.write_out_data = True
# Now you can use args.use_date and args.write_out_data in your code
print(f"use_date: {args.use_date}")
print(f"write_out_data: {args.write_out_data}")
这样,如果提供了
--build-standard-data
,它会将 use_date
设置为 'nominal_test_fixture_day' 并将 write_out_data
设置为 True。