python 標準庫原理與用法詳解之os.path篇

os中的path

查看源碼會看到,在os.py中有這樣幾行

if 'posix' in _names:
    name = 'posix'
    linesep = '\n'
    from posix import *
    #省略若幹代碼

elif 'nt' in _names:
    from nt import *
    try:
        from nt import _exit
        __all__.append('_exit')
    except ImportError:
        pass
    import ntpath as path
    #。。。

由於我們是在windows(WindowsNT)中,所以打開ntpath.py文件,可以看到開頭就定義瞭8個成員變量

curdir = '.'    #當前路徑標識
pardir = '..'   #
extsep = '.'    #擴展名分隔符
sep = '\\'
pathsep = ';'   #環境變量中路徑的分隔符
altsep = '/'    #
defpath = '.;C:\\bin'   #環境變量的存放位置
devnull = 'nul'

此外,還有一個名為supports_unicode_filenames的佈爾型成員變量,表示當前系統是否支持unicode的文件名。

可以理解為,path中封裝瞭一些和操作系統相關,並且在不同操作系統下代碼不同的功能,下面默認from os.path import *

輸入為路徑字符串的單參函數

輸出
normpath() 將路徑修改為\\a\\b形式
normcase() 將路徑修改為小寫的\\a\\b形式
abspath() 返回絕對路徑,其格式為X:\\a\\b
realpath() 返回絕對路徑,並消除其中的鏈接
relpath() 返回相對路徑,並消除其中的鏈接
split() 將輸入路徑分割為兩個部分
例如X:\\a\\b會返回為X:\\ab
splitext() 分割文件的擴展名
splidrive() 分割出驅動器和其他路徑
basename() 最下層的目錄或文件名稱,即split()[1]
dirname() 最下層目錄或文件所在目錄,即split()[0]
exists() 判斷輸入路徑是否存在,存在則返回True,否則False
lexists() 如果路徑損壞,也返回False
isabs() 判斷輸入路徑是否為絕對路徑
isfile() 判斷輸入路徑是否為文件
isdir() 判斷輸入路徑是否為目錄
islink() 判斷輸入路徑是否為鏈接
ismount() 判斷輸入路徑是否為掛載點(在windows中就是盤符)
例如os.path.ismount('C:\\'),返回為True
expanduser() 通過~對路徑進行擴展
expandvars() 將路徑擴展為命令行識別的變量

部分示例

>>> from os.path import *
>>> p = abspath('.')
>>> p
'E:\\Documents\\00\\1022'
>>> exists(p)
True
>>> splitdrive(p)
('E:', '\\Documents\\00\\1022')
>>> isfile(p)
False

與文件信息相關的單參函數

其輸入必須為文件路徑,不得為目錄

輸出~.getsize()以字節為單位獲取文件大小~.getctime()獲取文件創建時間,c即create~.getmtime()獲取文件最後修改時間,m即modify~.getatime()獲取文件最後訪問時間,a即access

輸出
~.getsize() 以字節為單位獲取文件大小
~.getctime() 獲取文件創建時間,c即create
~.getmtime() 獲取文件最後修改時間,m即modify
~.getatime() 獲取文件最後訪問時間,a即access

輸入為多個參數的函數

os.path.join,用於拼接路徑,超甜的一個功能。很多新手會為新建文件夾而困擾,很多時候不知道是寫D:\test還是D:\test\,而在os.path.join中這兩者基本是等價的。

>>> os.path.join('test','\\test1','test2\\','test3')
'\\test1\\test2\\test3'
判斷是否相同
~.samefile(p1, p2) 判斷目錄或文件是否相同
~.sameopenfile(fp1, fp2) 兩個打開的文件是否指向同一個文件

commonpath(list)commonprefix(list):返回list中所有path共有的最長路徑,即距離所有文件和文件夾的共同父文件夾。二者區別在於,後者會在返回的路徑加上\

到此這篇關於python 標準庫原理與用法詳解之os.path篇的文章就介紹到這瞭,更多相關python os.path內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: