構建路徑:
os.path 模組用來管理檔案路徑問題,它中包含了很多用以構建路徑的函式,其中最常用的便是 join,abspath 以及 expanduser 函式:
具體的操作例項如下所示:
>>> importos>>>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/rocky0429source file address : /root/rocky0429/test.py
拆分路徑
我們使用 python 可以很方便的構建檔案路徑,當然也可以很舒服的對檔案路徑進行拆分,os.path 模組在拆分路徑中常用的是 split/splitext,dirname 以及 basename 函式:
具體的操作例項如下所示:
>>> importos>>> 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 目錄下的所有檔案
>>> importos>>> [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 目錄下的所以列表
>>> importos>>> [table for table in os.listdir(os.path.expanduser('
~/rocky0429
')) if
os.path.isdir(table)]['
data
', '
leey
']
3.獲取 /root/rocky0429 目錄下所有目錄的絕對位址
>>> importos>>>
檔案的路徑問題
為了防止規範化錯誤之類的安全風險,也可以使用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...