Python中的命令列和變數引數?
命令列引數
命令列引數是輸入引數,允許使用者使程式以某種方式執行,例如輸出其他資訊,或從指定來源讀取資料,或以所需格式解釋資料。
Python 命令列引數
Python 提供了許多讀取命令列引數的選項。最常見的方法有:
- Python sys.argv
- Python getopt 模組
- Python argparse 模組
Python sys 模組
sys 模組將命令列引數 (CLA) 儲存到一個列表中,要檢索它,我們使用 sys.argv。這是一種簡單的方法,可以將命令列引數作為字串讀取。
import sys
print(type(sys.argv))
print('The command line arguments are: ')
for i in sys.argv:
print(i)執行上述程式後,我們的輸出將類似於:
輸出
>python CommandLineOption.py H E L L O <class 'list'> The command line arguments are: CommandLineOption.py H E L L O
Python getopt 模組
python getopt 模組解析類似於 sys.argv 的引數序列,並返回選項和引數對的序列以及非選項引數的序列。
語法
getopt.getopt(args, options, [long_options])
其中
Args – 要解析的引數列表
Options – 這是指令碼想要識別的選項字母字串。
Long_options – 此引數是可選的,是一個包含要支援的長選項名稱的字串列表。
getopt 模組選項語法包括:
- -a
- -bval
- -b val
- --noarg
- --witharg=val
- --witharg val
讓我們透過一個示例來了解 getopt 模組:
短格式選項
以下程式採用兩個選項 -a 和 -b,第二個選項需要一個引數。
import getopt print (getopt.getopt(['-a', '-bval', '-c', 'val'], 'ab:c:'))
結果
([('-a', ''), ('-b', 'val'), ('-c', 'val')], [])長格式選項
該程式採用兩個選項 --noarg 和 --witharg,序列應為 [‘noarg’, ‘witharg=’]
import getopt print (getopt.getopt([ '--noarg', '--witharg', 'val', '--witharg2=another' ],'',[ 'noarg', 'witharg=', 'witharg2=' ]))
結果
([('--noarg', ''), ('--witharg', 'val'), ('--witharg2',
'another')], [])另一個演示 geopt 模組用法的示例:
import getopt
import sys
argv = sys.argv[1:]
try:
opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file='])
print(opts)
print(args)
except getopt.GetoptError:
print('Something Wrong!')
sys.exit(2)結果
>python CommandLineOption.py -m 2 -h "Help" H E L L O
[('-m', '2'), ('-h', '')]
['Help', 'H', 'E', 'L', 'L', 'O']Python argparse 模組
Python argparse 模組是解析命令列引數的首選方法。此模組提供了多種選項,例如位置引數、引數的預設值、幫助訊息、指定引數的資料型別等。
下面是一個簡單的程式,用於瞭解 argparse 模組:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("string", help="Print the word in upper case letters")
args = parser.parse_args()
print(args.string.upper()) # This way argument can be manipulated.輸出
>python CommandLineOption.py "Hello, pythoN" HELLO, PYTHON
我們可以使用 argparse 模組設定可選引數,例如 --verbosity。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP