强制参数为有效路径



我正在编写一个简单的脚本,该脚本将用于解析存储在AWS CloudWatch上的JSON文件的内容。我在脚本中添加了一个参数解析器,该解析器将接受用户输入,并允许用户将文件的输出打印到屏幕(以预定方式(,或允许他们将内容输出到本地 JSON 文件。以下是困扰我的片段:

import argparse
parser = argparse.ArgumentParser(description="Process a log file")
parser.add_argument('-o', '--output', choices=[???, 'print'], 
default='print', help='Specify logfile output path or print to screen')
args = parser.parse_args()

我的问题源于parser.add_argument线,特别是choices论点。我想允许此标志的两个输入,这些输入是本地计算机上的print或某个有效路径。我希望当前用问号标记的选项是 Python 可以识别的 PATH。

有没有办法使用 argparse 指定标志的参数之一必须是 PATH?到目前为止,搜索结果尚无定论。

提前感谢!

使用type关键字参数来add_argument,而不是choices。正如文档所说:

add_argument()的类型关键字参数允许任何必要的 要执行的类型检查和类型转换。

def myfiletype(arg):
if arg == 'print' or os.path.isdir(arg):
return arg
else:
raise ValueError('Invalid path specification')

parser.add_argument('-o', '--output', type=myfiletype, 
default='print', 
help='Specify logfile output path or print to screen')

定义自定义type(如 https://stackoverflow.com/a/14117511/1093967 中所示(,其中值可以是有效的路径或'print'choices在这里不是正确的选择。

相关内容

  • 没有找到相关文章

最新更新