解決檔案路徑的問題的總結

2022-08-13 13:51:19 字數 3074 閱讀 7372

構建路徑:

os.path 模組用來管理檔案路徑問題,它中包含了很多用以構建路徑的函式,其中最常用的便是 join,abspath 以及 expanduser 函式:

具體的操作例項如下所示:

>>> import

os>>>os.getcwd()

'/root/rocky0429

'>>>os.listdir()['

test.py

', '

c.py

', '

b.txt

', '

a.txt']

>>> os.path.join('

~','

rocky0429

','a.txt')

'~/rocky0429/a.txt

'>>> os.path.abspath('.'

)'/root/rocky0429

'>>> os.path.abspath('..'

)'/root

'>>> os.path.abspath('

../rocky0429/b.txt')

'/root/rocky0429/b.txt

'>>> os.path.expanduser('~'

)'/root

'>>> os.path.expanduser('

~/rocky0429')

'/root/rocky0429

'>>> os.path.expanduser('

~/rocky0429/c.py')

'/root/rocky0429/c.py

'

上述**中的 os.path 模組中的 abspath 函式用來返回乙個相對路徑的絕對路徑,那麼相應的,也會存在乙個函式 isabs 來檢查某路徑是否為絕對路徑:

>>> os.path.isabs('

/root/rocky0429/test.py')

true

>>> os.path.isabs('~'

)false

當然在寫**的時候,有時候需要匯入當前原始檔所在目錄下的其他包,這個時候就需要獲取當前原始檔的父目錄,那麼如何獲取呢?我們可以用 __file__ 這個變數來表示,具體操作如下所示:

#

coding:utf-8

import

ossource_file_path = os.path.abspath(__file__

)print('

current working directory : {}

'.format(os.getcwd()))

print('

source file address : {}

'.format(source_file_path))

輸入的結果如下所示:

current working directory : /root/rocky0429

source file address : /root/rocky0429/test.py

拆分路徑

我們使用 python 可以很方便的構建檔案路徑,當然也可以很舒服的對檔案路徑進行拆分,os.path 模組在拆分路徑中常用的是 split/splitext,dirname 以及 basename 函式:

具體的操作例項如下所示:

>>> import

os>>> source_file_path = '

/root/rocky0429/test.py

'>>>os.path.split(source_file_path)('

/root/rocky0429

', '

test.py')

>>>os.path.splitext(source_file_path)('

/root/rocky0429/test

', '

.py'

)>>>os.path.dirname(source_file_path)

'/root/rocky0429

'>>>os.path.basename(source_file_path)

'test.py

'

判斷路徑是否存在

os.path 模組也提供了一些函式來判斷某條路徑是否存在,還能判斷處在這個條路徑的檔案的型別,常用的便是 exists,isfile 以及 isdir 函式(is 開頭是判斷類函式,返回布林型別結果):

看到這裡你可能覺得上面說的都很簡單,可恰恰是簡單的東西疊加組合就能「變出」很多你想要的結果,如何去使用這裡面有大學問。對於 os.path 模組裡的函式,如果我們可以充分利用,也能夠實現很多有用的功能,下面來看幾個例子:

1.獲取 /root/rocky0429 目錄下的所有檔案

>>> import

os>>> [file for file in os.listdir(os.path.expanduser('

~/rocky0429

')) if

os.path.isfile(file)]['

test.py

', '

c.py

', '

b.txt

', '

a.txt

']

2.獲取 /root/rocky0429 目錄下的所以列表

>>> import

os>>> [table for table in os.listdir(os.path.expanduser('

~/rocky0429

')) if

os.path.isdir(table)]['

data

', '

leey

']

3.獲取 /root/rocky0429 目錄下所有目錄的絕對位址

>>> import

os>>>

檔案的路徑問題

為了防止規範化錯誤之類的安全風險,也可以使用path類 例如,它從乙個固定的文件目錄返回檔案資料,這裡用的是客戶端的路徑,存在乙個漏洞,舉個例子,當客戶端輸入.filename這個路徑的時候,這樣這個路徑就變化了,其實他已經忽略了document 這個路徑,我們可以借助path類 如果處理url s...

解決路徑問題

定義 前台路徑 在jsp中 除j a 塊 填寫的的路徑 後台路徑 在j a 配置檔案中填寫的路徑 參照路徑 不以 開頭的 參照路徑為當前資源的訪問路徑 是位址列位址去掉訪問名稱 例如 url為http localhost 8080 01 primary hello.do去掉資源名稱hello.do ...

PHP檔案的路徑問題

如果只是php檔案引用的時候,使用dirname file 就可以解決了.但是如果引用的檔案裡有html 其中的url就不好定位了.使用網上提供的方法可以解決這個問題,鏈結 將檔案的目錄切換到根目錄後,html 中的url的路徑就填寫相對於根目錄的路徑就可以了.方法如下 其實很簡單的,你用你的web...