在進行Python腳本開發時,我們經常需要在終端中向程序傳遞一些參數。Python的sys模塊提供了sys.argv方法來獲取命令行參數。sys.argv是一個字符串列表,包含了命令行中所有的參數,其中第一個參數是程序本身的名稱。本文將從多個方面解析sys.argv的用法和相關注意事項。
一、sys.argv的用法
1、獲取命令行參數
import sys print(sys.argv)
在終端中執行Python腳本時,可以通過以下方式傳遞參數:
$ python test.py arg1 arg2 arg3
運行結果:
['test.py', 'arg1', 'arg2', 'arg3']
其中,test.py是程序本身的名稱,arg1、arg2、arg3是傳遞的參數。
2、獲取指定位置的參數
可以通過sys.argv[index]的方式獲取指定位置的參數值,其中index表示參數的索引值,從0開始計數。例如,獲取第一個參數的值:
import sys print(sys.argv[1])
當運行以下命令時:
$ python test.py arg1 arg2 arg3
運行結果:
arg1
二、sys.argv的注意事項
1、sys.argv的參數都是字符串類型
無論傳遞的參數是數字、布爾值還是其他類型,sys.argv都會將其轉換為字符串類型。因此,如果需要使用傳遞的值進行數值計算或比較操作,需要使用int()、float()等方法進行轉換。
例如,傳遞一個數字參數:
import sys print(type(sys.argv[1]), sys.argv[1]+1)
運行結果:
arg11
此時的輸出結果是字符串類型,因此需要進行類型轉換才能進行計算。
import sys print(type(int(sys.argv[1])), int(sys.argv[1])+1)
運行結果:
2
2、程序本身的名稱也算作參數
sys.argv列表中第一個參數是程序本身的名稱,如果需要獲取傳遞的參數值,需要從第二個元素開始獲取。如果使用sys.argv[0]獲取第一個元素,得到的將是程序本身的名稱。
例如:
import sys print(sys.argv[0]) # 輸出:test.py print(sys.argv[1]) # 輸出:arg1
3、傳遞多個參數時的注意事項
如果傳遞的參數中有空格或其他特殊字符,需要用引號將其括起來。例如,傳遞包含空格的參數:
$ python test.py "arg with space" arg2 arg3
運行結果:
['test.py', 'arg with space', 'arg2', 'arg3']
如果不使用引號將含有空格的參數括起來,程序將會把其解析成多個參數。
三、sys.argv的示例
以下是一個使用sys.argv的示例,根據傳遞的參數來執行不同的操作。運行此腳本需要傳遞一個參數,該參數為“start”或“stop”,start表示啟動服務,stop表示停止服務。
import sys if len(sys.argv) == 2: if sys.argv[1] == "start": # 啟動服務 print("start service") elif sys.argv[1] == "stop": # 停止服務 print("stop service") else: print("invalid parameter") else: print("usage: python service.py [start|stop]")
當運行以下命令時:
$ python service.py start
運行結果:
start service
當運行以下命令時:
$ python service.py test
運行結果:
invalid parameter
當運行以下命令時:
$ python service.py
運行結果:
usage: python service.py [start|stop]
原創文章,作者:SFIU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/136828.html