Her şeyden önce: bu ifadeler kongre karşısında uçar ve argparse
bu dizeleri kolayca değiştirmenize yardımcı olacak gerçekten bir araç değildir. Burada üç farklı dizgi diziniz var: yardım formatındaki metnin metni, bölüm başlıkları ve her bir seçenek için yardım metni. Bütün bu dizeler lokalleştirilebilir; , gettext()
module support aracılığıyla tüm bu dizeler için 'büyük harfli' bir çeviri sağlayabilir. Yeterince karar verdiyseniz ve read the source code a little varsa, bu dizelere ulaşabilir ve bunları değiştirebilirsiniz.
version
eylemi, varsayılan help
metni içerir, ancak help
bağımsız değişkenini ayarlayarak kendiniz tedarik edebilirsiniz. Aynı durum help
eylemi için de geçerlidir; Eğer add_help
argument ayarlarsanız el bu eylemi ekleyebilirsiniz False
için:
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-v', '--version', action='version',
version='%(prog)s 1.0', help="Show program's version number and exit.")
parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
help='Show this help message and exit.')
İleri, optional arguments
mesajı bir grup başlığı olduğu; her ayrıştırıcının, biri konumsal argümanlar için, diğeri isteğe bağlı olmak üzere iki varsayılan grubu vardır. ,
parser._positionals.title = 'Positional arguments'
parser._optionals.title = 'Optional arguments'
Eğer modülün belgesiz özel API cesaretini olan bir alt çizgi ile başlayan erişen adlarıyla, uyardı: Bir title
niteliği Her ikisinin de niteliklerini _positionals
ve _optionals
, bu ulaşabilir ve kodunuz gelecekteki güncellemelerde kırılabilir.
Son olarak, usage
dizesini değiştirmek için, yardım biçimlendiricisini alt sınıflamanız gerekir; Hep birlikte bu koyarak,
class CapitalisedHelpFormatter(argparse.HelpFormatter):
def add_usage(self, usage, actions, groups, prefix=None):
if prefix is None:
prefix = 'Usage: '
return super(CapitalisedHelpFormatter, self).add_usage(
usage, actions, groups, prefix)
parser = argparse.ArgumentParser(formatter_class=CapitalisedHelpFormatter)
Demo: formatter_class
argument olarak alt sınıf geçmesine
>>> import argparse
>>> class CapitalisedHelpFormatter(argparse.HelpFormatter):
... def add_usage(self, usage, actions, groups, prefix=None):
... if prefix is None:
... prefix = 'Usage: '
... return super(CapitalisedHelpFormatter, self).add_usage(
... usage, actions, groups, prefix)
...
>>> parser = argparse.ArgumentParser(add_help=False, formatter_class=CapitalisedHelpFormatter)
>>> parser._positionals.title = 'Positional arguments'
>>> parser._optionals.title = 'Optional arguments'
>>> parser.add_argument('-v', '--version', action='version',
... version='%(prog)s 1.0', help="Show program's version number and exit.")
_VersionAction(option_strings=['-v', '--version'], dest='version', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help="Show program's version number and exit.", metavar=None)
>>> parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS,
... help='Show this help message and exit.')
_HelpAction(option_strings=['-h', '--help'], dest='help', nargs=0, const=None, default='==SUPPRESS==', type=None, choices=None, help='Show this help message and exit.', metavar=None)
>>> print(parser.format_help())
Usage: [-v] [-h]
Optional arguments:
-v, --version Show program's version number and exit.
-h, --help Show this help message and exit.
(sen [ 'help'] ayarı çalıştı mı özel argüman gruplarıyla https://docs.python.org/3/library/argparse.html# olduğunu yardım et)? – jonrsharpe
Oh, anlıyorum - o zaman 'add_help 'öğesini' False' olarak ayarlayabilir ve manuel olarak yapabilirsiniz. Ancak küçük olan bu şeylerin konvansiyonudur. – jonrsharpe