İşte benim kodudur. Birden seçenekleri belirleyebilirsiniz:
parser.add_argument('-i', '--inputdir', help="Specify the input directory")
Bkz name or flags option documentation: add_argument()
yöntem isteğe bağlı argüman, -f
veya --foo
veya dosya adları listesi gibi bir pozisyonel argüman gibi, olup olmadığını bilmek gerekir
beklenen. Bu nedenle, add_argument()
'a iletilen ilk argümanlar, ya bir dizi bayrak ya da basit bir argüman adı olmalıdır.
Demo:
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-i', '--inputdir', help="Specify the input directory")
_StoreAction(option_strings=['-i', '--inputdir'], dest='inputdir', nargs=None, const=None, default=None, type=None, choices=None, help='Specify the input directory', metavar=None)
>>> parser.print_help()
usage: [-h] [-i INPUTDIR]
optional arguments:
-h, --help show this help message and exit
-i INPUTDIR, --inputdir INPUTDIR
Specify the input directory
>>> parser.parse_args(['-i', '/some/dir'])
Namespace(inputdir='/some/dir')
>>> parser.parse_args(['--inputdir', '/some/dir'])
Namespace(inputdir='/some/dir')
Ancak gerekli bağımsız değişkenler için ilk unsur sadece bir yer tutucudur. -
ve --
seçenekleri her zaman isteğe bağlıdır (komut satırı kuralıdır), bu tür anahtarlarla hiçbir zaman istenen argümanlar belirtilmez. Bunun yerine komut satırı yardımı, gerekli argümanların add_argument()
'a iletilen ilk argümana dayalı bir yer tutucuyla nereye ekleneceğini gösterecektir. İşte
args = parser.parse_args()
if not args.inputdir:
parser.error('Please specify an inputdir with the -i or --inputdir option')
parser.error()
method yazdırır: Eğer o sözleşme ile kırmak ve zaten gereklidir -
veya --
ile başlayan bir argüman kullanmak zorunda ise
, kendi denetimi yapmak gerekecek hata mesajınızla birlikte yardım bilgilerini girin ve ardından çıkın.
Açıklama için çok teşekkür ederim! Yardımını çok takdir ediyorum. – user3621633
Beğenmediğim şey, kullanımı yazdırdığı zaman, '-i' ve' --inputdir' basmıyor. Kullanımın kullanım şekli gibi olmasını istiyorum: [-h] [-i | --inputdir INPUTDIR] '; bu etki için bir şey. Muhtemelen bunu yapmanın bir yolu 'add_mutually_exclusive_group()' işlevini kullanmaktır, fakat bu bana biraz rahatsızlık verici geliyor. Daha iyi bir yol olup olmadığını merak ediyorum. – searchengine27
@ searchengine27: [yardım biçimlendirici sınıfını] (https://docs.python.org/2/library/argparse.html#formatter-class) özelleştirmeniz gerekir, korkarım. –