在使用py2exe編譯後,或者更改當前工作目錄後,如何獲取當前腳本的文件路徑:
獲得當前執行的腳本的所在目錄位置,那麼需要使用sys模塊的sys.path[0]變量或者sys.argv[0]來獲得。實際上sys.path是Python會去尋找模塊的搜索路徑列表,sys.path[0]和sys.argv[0]是一回事,因爲Python會自動把sys.argv[0]加入sys.path。
例如有如下文件:
/User/aaa/test/test.py
進入aaa文件:
運行test/test.py,並在該腳本中使用以下的命令:
os.getcwd(),home/echo,取的是當前的工作目錄
os.path[0]|os.argv[0] test/test.py,取的是被初始執行腳本所在的目錄
os.path.realpath(file),/home/echo/test/test.py,取的是腳本的完整目錄
特別的file這個變量有時候返回相對路徑,有時候返回絕對路徑,因此還要用os.path.realpath()函數來處理一下。
也即在這個例子 裏,os.path.realpath(file)輸出是“/home/echo/test/test.py”,
而 os.path.split(os.path.realpath(file))[0]輸出是“/home/echo/test”。
# -*- coding: cp936 -*-
import sys,os
#獲取腳本文件的當前路徑
def cur_file_dir():
#獲取腳本路徑
path = sys.path[0]
#判斷爲腳本文件還是py2exe編譯後的文件,如果是腳本文件,則返回的是腳本的目錄,
#如果是py2exe編譯後的文件,則返回的是編譯後的文件路徑
if os.path.isdir(path):
return path
elif os.path.isfile(path):
return os.path.dirname(path)
#打印結果
print cur_file_dir()