python獲取檔案的絕對路徑

2021-08-15 11:49:24 字數 2143 閱讀 6172

檔案目錄結構如下:

第一種方法:

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...