如何在 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!
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP