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