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。

更新於: 2019-07-30

525 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.