比方说,我有一个脚本,在文件上做一些工作。它会在命令行中使用该文件的名称,但如果未提供该文件,则默认为已知文件名(例如content.txt
)。与python的,我使用以下内容:用argparse指定默认文件名,但不打开它们--help?
parser = argparse.ArgumentParser(description='my illustrative example')
parser.add_argument('--content', metavar='file',
default='content.txt', type=argparse.FileType('r'),
help='file to process (defaults to content.txt)')
args = parser.parse_args()
# do some work on args.content, which is a file-like object
这很好。唯一的问题是,如果我运行python myscript --help
,如果文件不存在(我认为有意义),则获得ArgumentError
,并且不显示帮助文本。我宁愿它不尝试打开文件,如果用户只想要--help
。有没有办法做到这一点?我知道我可以将参数设置为一个字符串,并在以后自己打开文件(我一直这样做),但是可以很方便地处理它。
嗯,它看起来像你必须在这里做一个决定。您可以使默认文件可用(由于它是“默认”),或者只是自己打开文件,就像您建议的那样。或者,您可以使用stdin作为默认值,但是您将无法指定默认文件名,如果您不想填充该文件,这可能不是一个错误的选项。 –