2015-09-04 27 views
0

例如: 我傳遞項目的列表,在命令提示符下的參數格式如下:如何編寫python腳本在命令提示符下傳遞項目列表?

$test run -list1 ["one day", "one hour"] -list2 ["1234"] 

成功傳球列表1和列表2輸出後應該是:

list1: 
     type: list 
     output format: ["one day", "one hour"] 
list2: 
     type: list 
     output formate: ["1234"] 
+0

爲什麼不你只是傳遞一個字符串並使用'string.split(',')'來獲取列表? –

+0

命令行_always_是否會像這樣,有兩個名爲-list1和-list2的列表,或者列表的數量和名稱可以變化嗎? –

回答

2

可以使用argparse模塊。不過,語法會有點不同。

在腳本中,你可以使用​​模塊方式如下:

#!/usr/bin/python 
import argparse 

if __name__ == "__main__": 
    parser = argparse.ArgumentParser(description='My awesome script doing stuff') 
    parser.add_argument('--list1', metavar='V1', default=[], nargs='+', help='a string for the first list') 
    parser.add_argument('--list2', metavar='V2', default=[], nargs='+', help='a string for the second list') 

    arguments = parser.parse_args() 
    print(arguments.list1) 
    print(arguments.list2) 

然後,您可以打電話給你的腳本:

$./run.py --list1 "one day" "one hour" --list2 "1234" 

您可以使用nargs='*'代替nargs='+'允許空列表如$./run.py --list1 --list2 "something" "something else"而不是強制省略參數名稱(如$./run.py --list2 "1234"

+0

對我來說工作正常 謝謝 – sk1007

+0

是否可以按如下格式傳遞參數: $。/ run.py --list1 [「one day」「one hour」] --list2 [1234,5678,9087] – sk1007

+0

其實我正在尋找適當的列表格式 – sk1007

相關問題