强制参数成为有效路径

nat*_*142 0 python path argparse

我正在编写一个简单的脚本,用于解析存储在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()
Run Code Online (Sandbox Code Playgroud)

我的问题源于这parser.add_argument条线,特别是choices论证.我想为这个标志允许两个输入,它们是print本地机器上的一个或一些有效路径.我希望当前标记为问号的选项是Python可以识别的PATH.

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

提前致谢!

nos*_*klo 5

使用type关键字参数add_argument代替choices.正如文件所说:

type关键字参数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')
Run Code Online (Sandbox Code Playgroud)