(1)sys.ar**
乙個傳給python指令碼的指令引數列表。sys.ar**[0]是指令碼的名字。一般得到的是相對路徑,用os.path.abspath(sys.ar**[0])得到執行檔案的絕對路徑:
dirname, filename = os.path.split(os.path.abspath(sys.ar**[0]))
os.path.realpath(sys.ar**[0])
如果在命令列執行sys.ar**返回直譯器路徑:[『/library/frameworks/python.framework/versions/3.6/bin/ipython3』]
(2)_ _ file_ _
獲得當前執行模組所在的路徑,一般為相對路徑,用os.path.abspath(_ _ file_ _)得到執行檔案的絕對路徑:
dirname, filename = os.path.split(os.path.abspath( _ _ file_ _))
os.path.realpath(_ _ file_ _)
注意:python控制台下,直接使用print _ _ file _ 是會導致 name 『 _ file _ 』 is not defined錯誤的,因為這時沒有在任何乙個指令碼下執行,自然沒有 _ file _ _的定義了。
(3)sys.ar**[0]和_ _ file _ _的差異:在主執行檔案中時,兩者沒什麼差異,不過要是在不同的檔案下,就不同了,如a.py,b.py這兩個檔案
執行a.py結果如下:
如上圖結果可以看出:如果都是a.py兩者結果無異,但是從在a中匯入b時執行的sys.ar**[0]還是指的是執行的主檔案:a.py而_ _ file_ _卻輸出的是b.py
2.sys.path
模組搜尋路徑的字串列表。由環境變數pythonpath初始化得到。是乙個目錄的列表,sys.path[0]是呼叫python直譯器的當前指令碼所在的目錄,即主執行檔案的父級目錄。
例子:如在/user/ybp/a.py的檔案a.py中執行:print(sys.path[0])==>/user/ybp,
在命令列執行返回空字串;
3.注意os.path是系統環境變數,要與上面區分開來,沒有os.path[0],os.path中的一些方法:
(1)os.path.split(path)
將路徑名稱分成頭和尾一對。尾部永遠不會帶有斜槓。如果輸入的路徑以斜槓結尾,那麼得到的空的尾部。
如果輸入路徑沒有斜槓,那麼頭部位為空。如果輸入路徑為空,那麼得到的頭和尾都是空。
(2)os.path.realpath(path)
返回特定檔名的絕對路徑,可以在命令列中執行。
python獲取執行檔案位置
在網上常見的獲取檔案位置函式如下所示 import sys import os print sys.ar 0 print os.path.abspath print os.getcwd 但是注意後兩個所得到的並不是執行檔案的位置,而是工作目錄的位置 雖然在pycharm中執行結果是正確的 但是我在c...
python指令碼執行可執行檔案
python import os device r usbstor disk ven generic prod sd mmc rev 1.00 20100818841300000 0 blocksieze 32kb time 00 00 05 00 mode sr sw sv xr xw xv pa...
C 獲取可執行檔案位址
net core裡由於僅保留最基層的類庫,編譯後,一些附加類庫是無法附加生成的,所以一些原來的寫法不具有通用性,下面的通用性寫法,適用於.net 標準類庫與.net core類庫 可執行檔案位址 private readonly string locationpath system.io.direc...