天天看點

Python踩坑之 sys.argv[-1]代表什麼

平台:win10+python 3.7.0

一、sys說明:

sys.argv這個函數是我們寫python腳本中最常用的一個函數.

sys是Python的一個「标準庫」,也就是官方出的「子產品」,是「System」的簡寫,封裝了一些系統的資訊和接口。

  官方的文檔參考:​​https://docs.python.org/2/library/sys.html​​

  中文版文檔參考:​​http://xukaizijian.blog.163.com/blog/static/170433119201111625428624/​​

二、執行個體說明:

通過執行個體具體說明:

建立執行個體一test01.py,如下:

1 #conding:utf-8
2 import sys #導入sys子產品
3 print(sys.argv[0]) # 列印sys.argv的第0個參數
4 
5 # 來運作一下這個腳本,我們随便給他點參數,1個,2個,3個或更多都行.
6 #py -3 test01.py a b c d e f
7 #test01.py
8 #得出結果就顯示目前腳本名,這裡我們就可以得出第一個結論.      

執行個體一test01.py

得出結果就顯示目前腳本名,這裡我們就可以得出第一個結論:sys.argv[0] 傳回是的腳本

現在我們修改一下,得到執行個體二test02.py, 如下:

1 #conding:utf-8
2 import sys #導入sys子產品
3 print(sys.argv[1]) # 列印sys.argv的第1個參數
4 
5 #執行如下:
6 #py -3 test02.py a b c d e f 
7 #a      

執行個體二test02.py

得出結果就是第一個參數的值.通過這樣類推,我們就知道sys.argv參數的效果了.

傳回腳本本身的名字及給定腳本的參數.

了解shell腳本程式設計的可以這樣了解這些參數,sys.argv[0] 就是shell 腳本中的basename ,而sys.argv[1]....就是shell中的$1,$2.....

sys.argv也支援python字元串中的切片,我們還是先修改代碼,測試如下——執行個體三test03.py、執行個體四test04.py和執行個體五test05.py:

1 #conding:utf-8
2 import sys #導入sys子產品
3 print(sys.argv[1:]) # 列印sys.argv的第1個參數及其以後所有參數,傳回的值是一個list
4 
5 #結果如下:
6 #py -3 test03.py a b c d e f 
7 #['a', 'b', 'c', 'd', 'e', 'f']      

執行個體三test03.py

1 #conding:utf-8
2 import sys #導入sys子產品
3 print(sys.argv[1:3]) # 列印sys.argv的第1個參數到第三個參數,不包含第三個參數,傳回的值是一個list
4 
5 #結果如下:
6 #py -3 test04.py a b c d e f 
7 #['a', 'b']      

執行個體四test04.py

1 #conding:utf-8
 2 import sys #導入sys子產品
 3 print(sys.argv[1:5:2])
 4 print(sys.argv[-1])
 5 print(sys.argv[::-1])
 6 
 7 #結果如下:
 8 #py -3 test05.py a b c d e f 
 9 # ['a', 'c']
10 # f
11 #['f', 'e', 'd', 'c', 'b', 'a', '1234.py']      

執行個體五test05.py

上面示例使用了字元串的切片方法,需要先了解字元串的切片知識:見我另一篇部落格。

通過如上示例,應該明白sys.argv的使用和暫時的結果.

sys.argv就是将程式本身和給程式參數傳回一個list,這個list中的索引為0的就是程式本身.是以,裡面的給sys.argv的參數就是list索引.