2015-10-24 78 views
1

我有以下簡單的代碼:Python的命令行參數 - 希望打印錯誤,無參數

import sys, getopt 

ifile='' 
ofile='' 

try: 
    opts, args = getopt.getopt(sys.argv[1:],"h:i:o:") 
except getopt.GetoptError as e: 
    print (str(e)) 
    print("test.py -i input -o output") 
    sys.exit(2) 

for o, a in opts: 
    if o == '-h': 
     print 'test.py -i input -o output' 
     sys.exit() 
    elif o == '-i': 
     ifile=a 
    elif o == '-o': 
     ofile=a 

我應該需要添加,如果我想打印錯誤(也幫助)消息「測試-i的.py輸入輸出-o」當我剛執行腳本,如:

$ python test.py 

謝謝

回答

5

你可以寫

if len(sys.argv) <= 1: 
    print('test.py -i input -o output') 
    exit(1) 

導入後,基本上意味着如果我沒有任何參數,則輸出消息並退出運行腳本。

+0

謝謝。該行應該在opts的if循環中,對嗎? – exsonic01

+0

把它放在'import sys下面,我認爲getopt'會更好。 –

+0

謝謝〜!它工作人員 – exsonic01

3

只是作爲一個選擇,如果你有興趣,對於getopts的文件實際上是提供了一個建議,argparse使用,這顯著降低你必須寫處理參數的代碼行。

看那文檔的底部位置:

https://docs.python.org/2/library/getopt.html#getopt.GetoptError

這裏是​​

https://docs.python.org/2/library/argparse.html#module-argparse

大獎金的文檔以​​的是,有一個內置的「幫助「,很好地格式化。看看下面的例子。你也可以帶着這個代碼並進行測試。

from argparse import ArgumentParser, RawTextHelpFormatter 

parser = ArgumentParser(
    description='This application will perform actions', 
    formatter_class=RawTextHelpFormatter 
) 

parser.add_argument(
    '-i', 
    help='Things with i', 
) 

parser.add_argument(
    '-o', 
    help='Things with o', 
) 

args = vars(parser.parse_args()) 

if args.get('i'): 
    print(args.get('i')) 
elif args.get('o'): 
    print(args.get('o')) 
else: 
    parser.error('Invalid options provided') 

只是想我會分享作爲替代。

+1

謝謝。我一定會看看這個命令。 – exsonic01