Python3中的sys自帶模塊中有個argv的方法,這個方法其實作用很簡單
主要用在通過python執行xxx.py文件時獲取其攜帶的參數列表。
用一個例子來介紹或許更簡單明了吧:
創建一個argv_test.py文件:
# _*_ coding: utf-8 _*_ # @File : argv_test.py import sys message = sys.argv print(type(message)) print("sys.argv => %s" % message) 如果直接執行該文件: 結果為: <class 'list'> sys.argv => ['G:/Project Files/Rabbit MQ/argv_test.py']
可以看出sys.argv的值是一個list列表,由於我們是直接執行結果,並沒有在運行這個py文件傳參,所以這個列表就是字符串'G:/Project Files/Rabbit MQ/argv_test.py'
既然是列表我們取索引試試:
import sys message = sys.argv[0] print("sys.argv => %s" % message) 結果: sys.argv => G:/Project Files/Rabbit MQ/argv_test.py
如果取索引1的話,報錯提示 list index out of range。
也就是sys.argv取索引0,就是取得該py文件的絕對路徑字符串
當然sys.argv的用途應該是要得到執行文件時候的參數的,所以我們打開cmd,找到該文件位置,使用python3執行一下該文件,同時攜帶參數
# @File : argv_test.py import sys message1 = sys.argv[0] message2 = sys.argv[1] message3 = sys.argv[2:] print("sys.argv[0] => %s" % message1) print("sys.argv[1] => %s" % message2) print("sys.argv[2:] => %s" % message3)
# cmd執行py文件:
G:\Project Files\Rabbit MQ >> python3 argv_test.py param1 param2 param3 param4 param5 sys.argv[0] => argv_test.py sys.argv[1] => param1 sys.argv[2:] => ['param2', 'param3', 'param4', 'param5']
不知道大家發現一個問題沒有?
py文件自執行:sys.argv[0] = 此py文件的絕對路徑
使用cmd或者腳本執行py文件:sys.argv[0] = 該py文件的文件名(包含擴展名)