2012-12-28 19 views
16

Argparse seçeneklerinin değerlerini nasıl kısıtlarım? Sadece tek bir tamsayı izin vermelidir 0 veya 1 ve bg bir dizi kabul etmelidir Aşağıdaki kod sau seçenekteKomut satırı seçeneklerinin kısıtlama değerleri

. Bunu nasıl uygulayabilirim?

import os 
import sys, getopt 
import argparse 

def main(): 
    parser = argparse.ArgumentParser(description='Test script') 
    parser.add_argument('-sau','--set',action='store',dest='set',help='<Required> Set flag',required=True) 
    parser.add_argument('-bg','--base_g',action='store',dest='base_g',help='<Required> Base g',required=True) 
    results = parser.parse_args() # collect cmd line args 
    set = results.set 
    base_g = results.base_g 

if __name__ == '__main__': 
    main() 
+1

yerleşiğini maske yok: 'set = results.set' (siz Ayrıca, sözdizimi vurgulama rengini gör) – eumiro

+0

Ayrıca, bir sidenote üzerinde, argümanların gerekli olması durumunda, bayraklar değil, konumsal argümanlar olmamalıdır. –

+0

bu eğiticiyi kontrol et http://docs.python.org/howto/argparse – Tshepang

cevap

17

Sen add_argument ait type ve choices argümanlar kullanabilirsiniz. Yalnızca '0' ve kabul etmek '1', yapacağın:

parser.add_argument(…, choices=set("01")) 

Ve ancak tamsayı numaralarını kabul etmek, yapacağın:

parser.add_argument(…, type=int) 

Not olduğunu seçimlerinde, sen olacak type-argüman olarak belirttiğiniz türdeki seçenekleri vermek zorunda. Yani tamsayılar denetlemek ve sadece 0 ve 1 izin vermek, yapacağın:

parser.add_argument(…, type=int, choices=set((0,1))) 

Örnek:

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> _ = parser.add_argument("-p", type=int, choices=set((0, 1))) 
>>> parser.parse_args(["-p", "0"]) 
Namespace(p=0)