透過 Python 的 sys 模組中的 argv , 可以讓我們取得命令列上的所有輸入。
例如下面的程式碼:
import sys
print sys.argv
將上面的程式碼儲成 demo.py 之後。
當在終端機底下,執行:
>>> python demo-args.py hello world ['demo-args.py', 'hello', 'world']
我們可以看到,它會以空格作為分隔,讀取命令列上的文字。
因此藉由 sys.argv , 就可以透過命令列上的輸入來控制程式的行為。
當我們想要寫出像 Unix 命令列程式那樣的程式時, 只透過 sys.argv 就得做非常多苦工。 例如:
>>> python deom-args.py -f demo.txt -v xyz a1 a2 a3
Python 有許多模組,可以處理這個狀況。
- 例如:
- optparse argparse getopt clime ... 等等
在使用這些模組之前, 先認識一些名詞會有助於學習這些模組。
argument
使用者在命令後面所輸入的字串,也就是
-f demo.txt -v xyz a1 a2 a3
option, option argument, flag
選擇性參數,顧名思義,它可有可無, 端看使用者是否想要透過它來改變程式的行為。 一般而言,選擇性參數以 "-" 開頭,然後接著一個字母, 例如 "-f"。
-f -v
就是 option。
而緊跟在 option 之後的 argument 就是 option argument。
a.txt xyz
另外也可這樣指定 option argument
>>>
option 單獨存在時(也就是其後沒有跟著 option argument), 這樣的 option 被稱作 flag (旗標), 通常是用來代表開啟或關閉某個功能。
position argument
有別於可有可無的 option argument , 當程式必須要使用者輸入某些資料才能運行時,就應該使用 positoin argument。
a1 a2 a3