#python-3.x
Вопрос:
Я хочу использовать argparse только для отображения справки и использования и ничего больше.
Мой текущий код выглядит так:
import argparse
parser = argparse.ArgumentParser(prog='remove-duplicate-lines-except-blank-lines',
usage='%(prog)s [options] [files...]',
description='Remove duplicate line except white space')
args = parser.parse_args()
Чтобы получить помощь, я могу бежать:
$ python origname.py -h
и
$ python origname.py --help
Пока все идет хорошо. Однако, когда я пытаюсь использовать имена файлов без параметров, например:
$ python origname.py inputfile.txt optputfile.txt
Если дает мне использование и ошибку.
usage: origname [options] [files...]
origname: error: unrecognized arguments: inputfile.txt optputfile.txt
Как я могу передавать аргументы без параметров при использовании argparse?
Просто для ясности, я разбираюсь с остальной частью аргумента (напр. inputfile.txt optputfile.txt) и т.д. вручную sys.argv
, так что для этого мне не нужен argparse.
Комментарии:
1. почему вы обращаетесь с ним с помощью
sys.argv
, а не сargparse
помощью ? это кажется нелогичным2. @gold_cy это сценарий устаревшего кода. Я хочу использовать
argparse
для создания--help
, не хочу трогать остальную часть кода.
Ответ №1:
Вместо использования parser.parse_args()
используйте parser.parse_known_args()
.
import argparse
parser = argparse.ArgumentParser(prog='remove-duplicate-lines-except-blank-lines',
usage='%(prog)s [options] [files...]',
description='Remove duplicate line except white space')
parser.parse_known_args()
==>python foo.py --help
usage: remove-duplicate-lines-except-blank-lines [options] [files...]
Remove duplicate line except white space
optional arguments:
-h, --help show this help message and exit
==>python foo.py foo.txt
# nothing happens here