我們在實際工作中,經常會遇到通過命令——python ***.py 來運行python代碼的場景,有時候我們還希望在命令行中傳入參數,然后在代碼中運行,解決這個問題就需要使用sys.argv。sys.argv[]就是一個從程序外部獲取參數的橋梁,我們從外部取得的參數可以是多個,所以獲得的是一個列表list,也就是說sys.argv其實可以看作是一個列表,所以才能用[]提取其中的元素。其第一個元素是程序本身,隨后才依次是外部給予的參數。話不多說上代碼!
import sys
a=sys.argv[1]
b=sys.argv[2]
c=sys.argv[0]
print(a)
print(b)
print(c)
以命令行的方式運行腳本,python pytest2.py p1 p2?這里p1和p2是兩個參數,輸出
p1
p2
pytest2.py
可以看到,我們在命令行中輸入的參數p1和p2 成功的賦值給代碼中的參數a和b。
當運行python pytest2.py p1,使用1個參數時,則會輸出錯誤信息:
Traceback (most recent call last):
?File "pytest2.py", line 3, in
???b=sys.argv[2]
IndexError: list index out of range
原因很簡單就是代碼中我們輸出sys.argv[2],而實際我們只傳入了一個參數。
我們通過使用異常處理的方式,可以增強程序的健壯性,代碼如下:
try:
??? a = sys.argv[1]
??? b = sys.argv[2]
??? c = sys.argv[0]
??? print(a)
??? print(b)
??? print(c)
except:
???? print("請輸入兩個參數")
以命令行的方式運行腳本python pytest2.py p1 p2 p3 p4,程序會正常運行,新增代碼
print(sys.argv)
則會看到完整的輸出
['pytest2.py', 'p1', 'p2', 'p3', 'p4']
講到這里,大家就掌握了如何通過命令行的方式運行腳本并傳入參數供py代碼調用的正確使用姿勢啦!原創不易,如果文章幫到了您,請幫忙點贊轉發!