gpt4 book ai didi

Python 参数解析 : "Dry run" flag that disable other flags using

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:57 26 4
gpt4 key购买 nike

我有以下辅助函数用于使用 argparse 解析参数:

def get_cli_arguments():
parser = argparse.ArgumentParser(prog='Xtrayce')
parser.add_argument(
"-o", "--output",
default=get_default_output_path(),
help="Supply an output path.",
type=argparse.FileType('wb'),
)
parser.add_argument(
"-d", "--dry",
help="Don't save a file with the output.",
action="store_true",
)
parser.add_argument(
"-s", "--standard",
help="Also scan standard library and modules.",
action="store_true",
)

我希望每当用户指定 --dry 标志时,都不会从 --output 参数创建任何文件。

当用户指定 --dry 时“取消”文件创建的最佳方法是什么,同时仍然使用 default=type=argparse。文件类型("wb")?

最佳答案

没有简单的方法通过默认的 ArgumentParser 执行此操作,因为文件将在参数解析期间创建。

您可以将 --output 的类型更改为字符串并在写入前添加检查:

parser = argparse.ArgumentParser(prog='Xtrayce')
parser.add_argument(
"-o", "--output",
default=get_default_output_path(),
help="Supply an output path.",
)
parser.add_argument(
"-d", "--dry",
help="Don't save a file with the output.",
action="store_true",
)

if not args.dry:
with open(args.output, 'wb') as f:
f.write(...)

或者不使用 --dry 参数,您可以提供 - 作为 --output 参数,它将写入 sys.stdout 而不是文件。

来自 the docs :

FileType objects understand the pseudo-argument '-' and automatically convert this into sys.stdin for readable FileType objects and sys.stdout for writable FileType objects:

parser.add_argument('infile', type=argparse.FileType('r'))
parser.parse_args(['-']) Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>)```

关于Python 参数解析 : "Dry run" flag that disable other flags using,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com