Python獲取當前腳本文件路徑(支持py2exe)

在使用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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章