首發原創:微信公衆號「小詹學Python」python
最近在 github 上 git 別人的代碼下來學習 ,其中有一個 face-detection 相關的代碼 ,就涉及了 sys.argv ,而且運行後是這個樣子~git
本着問問題前先百度先google的原則 ,在網上找到了緣由 ,就出在sys.argv 上 。那麼 ,它到底是個什麼鬼 ?github
sys.argv[] 說白了就是一個從程序外部獲取參數的橋樑 ,咱們從外部取得的參數能夠是多個 ,因此得到的是一個列表(list),也就是說sys.argv其實能夠看做是一個列表 ,因此才能用[]提取其中的元素 。其第一個元素(sys.argv[0])是程序自己 ,隨後才依次是外部給予的參數 。bash
下邊用四句話來解釋它究竟是個什麼鬼 !?微信
1. 本質是一個列表學習
能夠利用type()方法查看類型 :ui
import sys
複製代碼
print(type(sys.argv))
print(len(sys.argv))
複製代碼
命令窗口調用獲得的結果以下 ,證明爲列表類型 。且外部輸入元素用空格隔開
google
C:\Users\Jan\test2\tensorflow-face-detection>python test_argv.py 1 2 3 4
<class 'list'>
5
複製代碼
2. 列表元素來自外部輸入spa
3. 外部輸入從1開始3d
4. argv[0] 表示自己代碼文件路徑
這裏 ,建立一個test_argv.py 文件 ,在命令窗口調用並輸入須要的參數 。
import sys
script,first,second,third = sys.argv
print ("The script is called:{%s}"% script)
print ("The first variable is:{%s}"% first)
print ("The second variable is:{%s}"% second)
print ("The third variable is:{%s}"% third)
複製代碼
獲得的結果以下:
C:\Users\Jan\test2\tensorflow-face-detection>python test_argv.py 1 2 3
The script is called:{test_argv.py}
The first variable is:{1}
The second variable is:{2}
The third variable is:{3}
複製代碼
調用過程一共從外部輸入3個參數 ,可是輸出了四個 ,這個實例綜合講述了 2 ,3 ,4 三點 。即在外部輸入時 ,argv[0] 默認爲自己代碼文件路徑 ,且外部輸入從 argv[1] 開始 。
對照着實例 ,其實還算比較好理解 。這裏再舉一個例子便於理解 。咱們知道 os 模塊裏的 os.system 是能夠打開文件的,這裏外部輸入參數改成一個 txt 文件 ,調用sys.argv[] 打卡 。
import sys
import os
os.system(sys.argv[1])
複製代碼
在命令窗口調用並輸入參數(參數爲要打開的文件名),以下 。這裏代碼中參數爲sys.argv[1],即外部輸入的第一個參數test_argv.txt ,若是是sys.argv[0] ,則打開的是代碼自己。
最後歡迎掃碼關注,和小詹一塊兒愉快的學習玩耍噢~