檔案目錄結構如下:
第一種方法:
os.path.abspath(__file__)
import os
def load_file():
# 獲取當前檔案路徑
current_path = os.path.abspath(__file__)
# 獲取當前檔案的父目錄
father_path = os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".")
# config.ini檔案路徑,獲取當前目錄的父目錄的父目錄與congig.ini拼接
config_file_path=os.path.join(os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".."),'config.ini')
print('當前目錄:' + current_path)
print('當前父目錄:' + father_path)
print('config.ini路徑:' + config_file_path)
load_file()
輸出結果:
當前父目錄:/users/shanml/documents/python/config/bin
config.ini路徑:/users/shanml/documents/python/config/config.ini
來測試一下:
main.py
if __name__=='__main__':
load_file()
輸出結果,路徑同樣沒問題:
當前目錄:/users/shanml/documents/python/config/main.py
當前父目錄:/users/shanml/documents/python/config
config.ini路徑:/users/shanml/documents/python/config.ini
參考:
第二種方法:使用inspect
import os,inspect
def load_file():
# 獲取當前檔案路徑
current_path=inspect.getfile(inspect.currentframe())
# 獲取當前檔案所在目錄,相當於當前檔案的父目錄
dir_name=os.path.dirname(current_path)
# 轉換為絕對路徑
file_abs_path=os.path.abspath(dir_name)
# 劃分目錄,比如a/b/c劃分後變為a/b和c
list_path=os.path.split(file_abs_path)
print('list_path:' + str(list_path))
# 配置檔案路徑
config_file_path=os.path.join(list_path[0],'config.ini')
print('當前目錄:' + current_path)
print('config.ini檔案路徑:' + config_file_path)
list_path:('/users/shanml/documents/python/config', 'bin')
config.ini檔案路徑:/users/shanml/documents/python/config/config.ini
在mian.py中執行load_file方法:
list_path:('/users/shanml/documents/python/config', 'bin')
config.ini檔案路徑:/users/shanml/documents/python/config/config.ini
參考: 檔案絕對路徑獲取
yourclass.class.getclassloader getresource threadpoolconfig.xml getpath 通過上述方法獲取到的一般是指定檔案的絕對路徑 並且該檔案必須存放在src目錄下 存在的問題 如果絕對路徑中存在空格,getpath取到的值是經過urlenc...
MFC獲取檔案的絕對路徑
i.需求1.獲取當前檔案的絕對路徑 firstname用於存放檔案的絕對路徑位址 define maxsize 1024 char firstname maxsize memset firstname,0x00 maxsize 1.獲取檔案的絕對路徑 getmodulefilename afxget...
C 獲取檔案的絕對路徑
要在c 中獲取路徑有好多方法,一般常用的有以下五種 獲取應用程式的當前工作目錄。string path1 system.io.directory.getcurrentdirectory messagebox.show 獲取應用程式的當前工作目錄 path1 獲取程式的基目錄。messagebox.s...