假设我有一个脚本,用于处理文件。它会在命令行上接收该文件的名称,如果没有提供该参数,则会默认为已知的文件名(例如content.txt
)。使用Python的 argparse
模块,我可以这样写:
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
,我宁愿它不尝试打开文件。有没有办法做到这一点?我知道我可以把参数作为字符串,并稍后自己处理打开文件(我一直在这样做),但让argparse
来处理会更方便。