python在命令行運行.py文件時,如何在命令行傳遞參數(shù)給運行程序,python默認提供了sys模塊的系統(tǒng)參數(shù)屬性實現(xiàn)接收命令行中的外部參數(shù)。
立即前往微信小程序【知識星球】提問>>>
另一種則是通過argparse模塊實現(xiàn)的,argparse模塊可以實現(xiàn)事先對命令行參數(shù)的初始化,更加的便于命令行參數(shù)的管理。
1、sys.argv參數(shù)
sys.argv的命令行參數(shù)獲取方式比較的簡單,直接通過提取sys.argv的值就可以獲取到其對應(yīng)的參數(shù)。
比如,下面寫一個hello_world.py模塊,并且在其中引用了命令行參數(shù)。
import sys
print('Hi ' + str(sys.argv[1]) + ', welcome to Hello World!')
直接在命令行執(zhí)行當(dāng)前的.py文件,執(zhí)行命令應(yīng)該是這樣的。
python hello_world.py Siri
這時我們預(yù)期的結(jié)果應(yīng)該是下面這樣的。
# Hi Siri, welcome to Hello World!
執(zhí)行后的結(jié)果和預(yù)期的運行結(jié)果是一模一樣的。
在運行時,有一個不好的地方時,若是在命令行沒有傳遞足夠的參數(shù),則會直接拋出下面的異常。
2、argparse參數(shù)
使用argparse模塊,有一個好處就是事先對需要在命令行傳遞的參數(shù)做一個初始化的賦值,若是命令行沒有值的時候則可以使用默認值來賦值。
并且argparse模塊可以通過參數(shù)構(gòu)造器ArgumentParser實現(xiàn)對參數(shù)的管理,看起來一目了然。
import argparse
# 初始化參數(shù)構(gòu)造器
parser = argparse.ArgumentParser()
# 在參數(shù)構(gòu)造器中添加兩個命令行參數(shù)
parser.add_argument('--name', type=str, default='Siri')
parser.add_argument('--message', type=str, default=',Welcom to Python World!')
# 獲取所有的命令行參數(shù)
args = parser.parse_args()
print('Hi ' + str(args.name) + str(args.message))
同樣的,創(chuàng)建一個hello_python.py文件,來運行上述代碼塊,看一下執(zhí)行效果。
python hello_python.py
可以發(fā)現(xiàn)在未添加命令行的參數(shù)傳遞后,默認使用的是我們構(gòu)造器中添加的參數(shù)默認值來進行賦值的。
接下來,若是我們在命令行中再次對參數(shù)進行重新賦值是怎樣的效果。
python hello_python.py --name Laow --message Hello_World
「Python 集中營」,只做知識分享 !
聯(lián)系客服