如何在 Python 中訪問命令列引數?


命令列是向作業系統發出可執行命令的地方。可以透過在命令列中將 Python 指令碼名稱放在 python 可執行檔案前面來執行 Python 指令碼。

C:\users\acer>python test.py

如果希望將某些資料元素傳遞給 Python 指令碼進行處理,則這些元素將作為以空格分隔的值寫入指令碼名稱的後面。這個空格分隔的值列表稱為命令列引數。

例如,

C:\users\acer>python test.py Hello TutorialsPoint

當存在透過命令列傳遞引數的方法時,也必須存在接受傳遞的引數的方法。有多種方法可以訪問它們

  • 使用列表物件 argv[]

  • 使用 argparse 模組

  • 使用 getopt 模組

使用 argv[] 列表物件

Python 包含一個名為 argv[] 的特殊列表物件,用於儲存傳遞的這些命令列引數。它們以空格字元區分。argv[] 定義在 Python 發行版的 sys 模組中。

示例

例如,假設我們嘗試在透過命令列執行 Python 檔案“test.py”時將兩個字串作為引數傳遞。

C:\users\acer>python test.py Hello TutorialsPoint

然後,此程式的列表物件將包含以下內容:

sys.argv[]=[‘test.py’, ‘Hello’, ‘TutorialsPoint’]

test.py

在 Python 程式中,訪問這些引數如下所示:

import sys

print ("first command line argument: ",sys.argv[1])
print ("second command line argument: ",sys.argv[2])

輸出

輸出將如下所示:

first command line argument: Hello
second command line argument: Tutorialspoint

使用 argparse 模組

argparse 模組是一個內建模組,它減少了樣板程式碼,並使您的程式碼更健壯。它比使用特殊的列表物件 argv[] 更好,因為 argparse 模組處理所有標準用例,包括子命令,併為您生成幫助及其用法,檢查和清理使用者輸入,而 argv[] 無法做到這一點

示例

在以下示例中,讓我們嘗試透過命令列執行以下 Python 程式“test.py”。

import argparse

parser = argparse.ArgumentParser("simple_example")
parser.add_argument('student_id', type=str, help='Show student_id')
args = parser.parse_args()

print("The Student Exists with ID:")
print(args.student_id)

在命令列中,使用以下命令執行上述程式,

輸出

python test.py 2000133

輸出將如下所示:

The Student Exists with ID:
2000133

使用 getopt 模組

Python 提供的 getopt 模組用於在程式中解析命令列引數。API 的設計類似於 C 程式語言中的 getopt() 函式,因此它支援與該函式相同的約定。

此模組提供了一個具有相同名稱的方法,getopt()。它用於訪問命令列引數。以下是此方法的語法:

getopt.getopt(args, shortopts, longopts=[])

如我們所見,getopt() 方法接受三個引數:args、shortopts 和 longopts

其中,

  • args 是命令列引數的列表

  • args 是命令列引數的列表

  • Longopts 是一個包含長選項名稱的字串列表。需要引數的選項後面應跟一個等號 (=)。

此方法等效於 sys.args[1:],即它不訪問程式的引用。

示例

以下示例演示瞭如何使用 getopt.getopt() 方法解析命令列引數。

import sys
import getopt

def welcome():
   first_arg = None
   next_arg = None
   argv = sys.argv [1:]
   try:
      opts , args = getopt.getopt (argv, "f:n:")
   except:
      print ("Error")
   for opt , arg in opts:
      if opt in ['-f']:
         first_arg = arg
   elif opt in ['-n']:
         next_arg = arg
   print (first_arg + " " + next_arg)
welcome()

輸出

使用以下命令透過命令列傳遞兩個引數來執行上述程式:

python test.py -f Hello -n Tutorialspoint!

輸出如下所示:

Hello Tutorialspoint!

更新於: 2023年4月21日

400 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.