我寫了一個函數,最多接受4個選項和2個參數。選項是-1,-2,-3和-u。默認情況下,它們的值分別設置爲true,true,true和false,但啓用任何選項都會導致該值翻轉。問題是,即使當我指定,比如說,Python optparse不接受選項
python comm.py -1 -2 -u test test2
並且打印選項的值,它們仍然顯示默認值。下面是我的代碼的相關部分:
...
...
...
parser.add_option("-1", action="store_false", dest="xcol1", default=True, help="...")
parser.add_option("-2", action="store_false", dest="xcol2", default=True, help="...")
parser.add_option("-3", action="store_false", dest="dups", default=True, help="...")
parser.add_option("-u", action="store_true", dest="donotsort", default=False, help="...")
options, args = parser.parse_args(sys.argv[2:])
xcol1=options.xcol1
xcol2=options.xcol2
dups=options.dups
donotsort=options.donotsort
print "xcol1:"
print xcol1
print "xcol 2:"
print xcol2
print "dups:"
print dups
print "donotsort:"
print donotsort
print args
...
...
...
執行與上面的代碼將輸出前述方式命令:
真
假
真
真
test,test2
即,默認值。它真的應該輸出「False,False,True,True ......」,因爲選項1,2和u已啓用。我在做什麼錯了?是否與解析器有關,因爲我不是100%肯定,我用正確的解析器
此外,當我列出選項-12u
代替-1 -2 -u
,它的行爲有所不同 - 布爾值是不同的
爲什麼它會按照您的預期工作?你做了'-12u'而不是'-1 -2 -u' – Navith
好的,我把它改成了-1 -2 -u,現在輸出結果是True,False,True,True - 但是,第一個選項應該是False 。另外,我認爲不需要單獨選項之間的空格 – gallardoelise
將'sys.argv [2:]'更改爲'sys.argv [1:]' – Navith