Указать имена файлов по умолчанию с помощью argparse, но не открывать их с помощью --help?

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

12
задан Ismail Badawi 23 November 2011 в 03:26
поделиться