Скажем, у меня есть script, который выполняет некоторую работу над файлом. Он принимает это имя файла в командной строке, но если он не указан, по умолчанию используется известное имя файла (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
позаботится об этом.