ben değilim ama bu, daha önce istendi düşünüyorum iyi bir arama teriminden emin değilim.
bu soru çok uzakta olmadan önce (argparse ve sys.argv ararken bulunan)
argparse - Build back command line
, açık olalım.
args=parser.parse_args()
,
args=parser.parse_args(sys.argv[1:])
ile aynıdır. Ancak,
sys.argv[1:]
'un bazı rasgele
args
üreteceğini bilmek istediğiniz durumlarda hayal edebiliyorum. Belki test için, belki başkasının kodunu sürdüğün için.
Bu, argparse
kodunda böyle bir kod yok. Ancak sınırlı bir durumlar için tanımlanmış eylemlerden bilgi alabilir ve sys.argv
'u oluşturabilirsiniz.
In [432]: parser = argparse.ArgumentParser()
In [433]: parser.add_argument('--example', type=int, default=0)
Out[433]: _StoreAction(option_strings=['--example'], dest='example', nargs=None, const=None, default=0, type=<type 'int'>, choices=None, help=None, metavar=None)
tanımlanan Eylemler listesi:
In [435]: parser._actions
Out[435]:
[_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),
_StoreAction(option_strings=['--example'], dest='example', nargs=None, const=None, default=0, type=<type 'int'>, choices=None, help=None, metavar=None)]
ilgi birini seçin ve kimi öznitelikleri bakmak: Şimdi oluşturmak
In [436]: a1=parser._actions[-1]
In [437]: a1.type
Out[437]: int
In [438]: a1.default
Out[438]: 0
args
:
In [439]: args=parser.parse_args(['--example','1'])
In [440]: args
Out[440]: Namespace(example=1)
In [441]: args.example *= 2
A sim Yeni args
'u kullanarak bir liste oluşturma eylemi ve Eylemden bilgi. Açıkçası, çalışma kodunun hangi eylemi kullanacağını anlaması gerekiyor. En yaygın türleri için str()
yeterlidir.
In [442]: if args.example != a1.default:
.....: print(['--example',str(args.example)])
.....:
['--example', '2']
Ya metavar
özniteliği ile oynayabilir ve usage
biçimlendirici: Bence var yok
In [445]: a1.metavar=str(args.example)
In [446]: parser.print_usage()
usage: ipython2.7 [-h] [--example 2]
; Bir argümanın 'type'ı herhangi bir keyfi dönüşüm fonksiyonu olabilir, bunlardan her biri için bir tersini oluşturmanız gerekir. –
Neye ulaşmaya çalışıyorsunuz? Daha fazla doğrudan aramaya çalıştığınız her şeye erişemiyor musunuz? – jonrsharpe