Kullanarak bir komut dosyası oluşturdum argparse.
Komut dosyasının bir seçenek olarak bir yapılandırma dosyası adı alması gerekir ve kullanıcı, komut dosyasını tamamen yürütmek veya yalnızca simüle etmek isteyip istemediğini belirleyebilir.
Geçirilecek argümanlar: ./script -f config_file -sveya ./script -f config_file.
-F config_file bölümü için sorun yok, ancak sürekli olarak -s için argümanları sormaya devam ediyor.
Bunu denedim:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file')
#parser.add_argument('-s', '--simulate', nargs = '0')
args = parser.parse_args()
if args.file:
config_file = args.file
if args.set_in_prod:
simulate = True
else:
pass
Aşağıdaki hatalarla:
File "/usr/local/lib/python2.6/dist-packages/argparse.py", line 2169, in _get_nargs_pattern
nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs)
TypeError: can't multiply sequence by non-int of type 'str'
Ve ''yerine aynı hata 0.