解决文件路径的问题的总结
構(gòu)建路徑:
os.path 模塊用來管理文件路徑問題,它中包含了很多用以構(gòu)建路徑的函數(shù),其中最常用的便是 join,abspath 以及 expanduser 函數(shù):
-
join:拼接路徑(不同的操作系統(tǒng)使用不同的分隔符拼接);
-
abspath:得到絕對(duì)路徑;
-
expanduser:展開用戶的 home 目錄。
具體的操作實(shí)例如下所示:
>>> 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 函數(shù)用來返回一個(gè)相對(duì)路徑的絕對(duì)路徑,那么相應(yīng)的,也會(huì)存在一個(gè)函數(shù) isabs 來檢查某路徑是否為絕對(duì)路徑:
>>> os.path.isabs('/root/rocky0429/test.py') True >>> os.path.isabs('~') False當(dāng)然在寫代碼的時(shí)候,有時(shí)候需要導(dǎo)入當(dāng)前源文件所在目錄下的其他包,這個(gè)時(shí)候就需要獲取當(dāng)前源文件的父目錄,那么如何獲取呢?我們可以用 __file__ 這個(gè)變量來表示,具體操作如下所示:
# 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))輸入的結(jié)果如下所示:
Current working directory : /root/rocky0429 Source file address : /root/rocky0429/test.py拆分路徑
?
我們使用 Python 可以很方便的構(gòu)建文件路徑,當(dāng)然也可以很舒服的對(duì)文件路徑進(jìn)行拆分,os.path 模塊在拆分路徑中常用的是 split/splitext,dirname 以及 basename 函數(shù):
?
-
split:返回一個(gè)二元組,包括文件的路徑和文件名;
-
splitext:也是返回一個(gè)二元組,包括擴(kuò)展名和去除擴(kuò)展名的部分;
-
dirname:返回文件所在路徑;
-
basename:返回文件名。
?
具體的操作實(shí)例如下所示:
>>> 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 模塊也提供了一些函數(shù)來判斷某條路徑是否存在,還能判斷處在這個(gè)條路徑的文件的類型,常用的便是 exists,isfile 以及 isdir 函數(shù)(is 開頭是判斷類函數(shù),返回布爾類型結(jié)果):
?
-
exists:判斷某條路徑是否存在;
-
isfile:判斷路徑是否存在且為一個(gè)文件;
-
isdir:判斷路徑是否存在且為一個(gè)文件夾。
?看到這里你可能覺得上面說的都很簡單,可恰恰是簡單的東西疊加組合就能“變出”很多你想要的結(jié)果,如何去使用這里面有大學(xué)問。對(duì)于 os.path 模塊里的函數(shù),如果我們可以充分利用,也能夠?qū)崿F(xiàn)很多有用的功能,下面來看幾個(gè)例子:
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 目錄下所有目錄的絕對(duì)地址
>>> import os >>> {table: os.path.realpath(table) for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)} {'data': '/root/rocky0429/data', 'leey': '/root/rocky0429/leey'}?
轉(zhuǎn)載于:https://www.cnblogs.com/key01/p/10185713.html
總結(jié)
以上是生活随笔為你收集整理的解决文件路径的问题的总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邻接矩阵实现(有向邻接矩阵)、(无向邻接
- 下一篇: 项目计划制定