#python #python-2.7
#python #python-2.7
Вопрос:
У меня есть код, который принимает некоторые аргументы следующим образом:
parser = argparse.ArgumentParser()
requiredNamed = parser.add_argument_group('required named arguments')
requiredNamed.add_argument('--input_feed', help='''Please provide an input csv file for automatic database creation such as follow: n environment, database_name, location n
ENV, d_wc_wrk_pic, '/data/dev/wc/storage/work/d_wc_wrk_pic'
''',required=True)
args = parser.parse_args()
Вывод на стандартный вывод выглядит следующим образом:
когда я набираю команду —help, за подсказками не следуют новые строки? может ли кто-нибудь предложить мне способ исправить эту ошибку новой строки?
Ответ №1:
В argparse
модуле есть метод в классе HelpFormatter:
def _split_lines(self, text, width):
text = self._whitespace_matcher.sub(' ', text).strip()
# The textwrap module is used only for formatting help.
# Delay its import for speeding up the common usage of argparse.
import textwrap
return textwrap.wrap(text, width)
Хотя ваше сообщение справки содержит новые строки, но _split_lines
метод заменяет их пробелами, а затем снова разделяет строки с помощью textwrap
модуля.
Чтобы избежать прямого изменения кода argparse
moudle, вы можете использовать трюк, называемый инъекцией:
import argparse
def inject_help_formatter():
def _my_split_lines(self, text, width):
return text.split('n')
# Inject
argparse.HelpFormatter._split_lines = _my_split_lines
# Do inject before `parser.parse_args()`
inject_help_formatter()
parser = argparse.ArgumentParser()
requiredNamed = parser.add_argument_group('required named arguments')
requiredNamed.add_argument('--input_feed', help='''Please provide an input csv file for automatic database creation such as follow:
environment, database_name, location
ENV, d_wc_wrk_pic, '/data/dev/wc/storage/work/d_wc_wrk_pic'
''', required=True)
args = parser.parse_args()
--help
выводит:
optional arguments:
-h, --help show this help message and exit
required named arguments:
--input_feed INPUT_FEED
Please provide an input csv file for automatic database creation such as follow:
environment, database_name, location
ENV, d_wc_wrk_pic, '/data/dev/wc/storage/work/d_wc_wrk_pic'