Python os.path

os.path及其重要函數

(轉載於:http://www.cnblogs.com/dkblog/archive/2011/03/25/1995537.html)

os.path.abspath(path) #返回絕對路徑
os.path.basename(path) #返回文件名
os.path.commonprefix(list) #返回list(多個路徑)中,所有path共有的最長的路徑。
os.path.dirname(path) #返回文件路徑
os.path.exists(path)  #路徑存在則返回True,路徑損壞返回False
os.path.lexists  #路徑存在則返回True,路徑損壞也返回True
os.path.expanduser(path)  #把path中包含的"~"和"~user"轉換成用戶目錄
os.path.expandvars(path)  #根據環境變量的值替換path中包含的”$name”和”${name}”
os.path.getatime(path)  #返回最後一次進入此path的時間。
os.path.getmtime(path)  #返回在此path下最後一次修改的時間。
os.path.getctime(path)  #返回path的大小
os.path.getsize(path)  #返回文件大小,如果文件不存在就返回錯誤
os.path.isabs(path)  #判斷是否爲絕對路徑
os.path.isfile(path)  #判斷路徑是否爲文件
os.path.isdir(path)  #判斷路徑是否爲目錄
os.path.islink(path)  #判斷路徑是否爲鏈接
os.path.ismount(path)  #判斷路徑是否爲掛載點()
os.path.join(path1[, path2[, ...]])  #把目錄和文件名合成一個路徑
os.path.normcase(path)  #轉換path的大小寫和斜槓
os.path.normpath(path)  #規範path字符串形式
os.path.realpath(path)  #返回path的真實路徑
os.path.relpath(path[, start])  #從start開始計算相對路徑
os.path.samefile(path1, path2)  #判斷目錄或文件是否相同
os.path.sameopenfile(fp1, fp2)  #判斷fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2)  #判斷stat tuple stat1和stat2是否指向同一個文件
os.path.split(path)  #把路徑分割成dirname和basename,返回一個元組
os.path.splitdrive(path)   #一般用在windows下,返回驅動器名和路徑組成的元組
os.path.splitext(path)  #分割路徑,返回路徑名和文件擴展名的元組
os.path.splitunc(path)  #把路徑分割爲加載點與文件
os.path.walk(path, visit, arg)  #遍歷path,進入每個目錄都調用visit函數,visit函數必須有
3個參數(arg, dirname, names),dirname表示當前目錄的目錄名,names代表當前目錄下的所有
文件名,args則爲walk的第三個參數
os.path.supports_unicode_filenames  #設置是否支持unicode路徑名

os.path.abspath(path)

返回路徑名path的規範化的絕對路徑。在大多數平臺,這等同於這樣normpath(join(os.getcwd(), path))調用normpath()函數。

出現於版本1.5.2。

os.path.basename(path)

返回路徑名path的主文檔名。path上調用split()函數,返回的二元組中的第二個元素就是主文檔名。這和Unix的basename不同;對於'/foo/bar/'basename返回'bar',而basename()函數返回空字符串('')。

os.path.commonprefix(list)

返回list中所有路徑的最長通用前綴(逐字符比較)。如果list爲空,返回空字符串('')。因爲是逐字符比較,所以可能會返回無效的路徑。

os.path.dirname(path)

返回路徑名path的目錄名。path上調用函數split(),返回的二元組中的第一個元素就是目錄名。

os.path.exists(path)

如果path引用一個存在的路徑,返回True如果path引用一個斷開的符號鏈接,返回False在某些平臺上,儘管path物理存在,但是由於沒有執行os.stat()的權限,該函數也會返回False

os.path.lexists(path)

如果path引用一個存在的路徑,返回True對於斷開的符號鏈接也返回True等同於缺少os.lstat()的平臺上的exists()

出現於版本2.4。

os.path.expanduser(path)

在Unix和Windows平臺上,返回參數,參數中開頭的~或者~user被替換成user的主/家目錄。

在Unix上,開頭的~被替換成環境變量HOME,如果它被設置的話;否則,通過內建模塊pwd在密碼目錄查詢當前用戶的家目錄。如果開頭是 ~user ,則直接在密碼目錄中查詢(user的家目錄)。

在Windows上,將使用HOMEUSERPROFILE,如果它們被設置的話;否則使用HOMEPATHHOMEDRIVE的組合。如果開頭是~user,首先按上述方式得到user路徑,然後移除最後的目錄部分。

如果擴展失敗或者參數path不是以~打頭,則直接返回參數(path)。

os.path.expandvars(path)

返回參數,其中的環境變量被擴展。參數中形如$name或者${name}的部分被替換成環境變量name的值。如果格式不正確或者引用了不存在的變量,則不進行替換(或者擴展)。

在Windows上, 除了$name${name}之外還支持如%name%這樣的擴展。

os.path.getatime(path)

返回path的最後訪問時間。返回的是從Unix紀元開始的跳秒數(epoch,Unix紀元,即GMT 1970-01-01 00:00:00)(參見time模塊)。如果文件不存在或者不可訪問,返回os.error

出現於版本1.5.2。

改變於版本2.3:如果os.stat_float_times()返回True,則結果是浮點數。

os.path.getmtime(path)

返回path的最後修改時間。返回的是從Unix紀元開始的跳秒數(參見time模塊)。如果文件不存在或者不可訪問,返回os.error

出現於版本1.5.2。

改變於版本2.3:如果os.stat_float_times()返回True,則結果是浮點數。

os.path.getctime(path)

返回系統的ctime,在Unix這樣的系統上,它是文件元數據最後修改時間(或者可以說是文件狀態最後修改時間);在Windows這樣的系統上,它是path的創建時間。返回的是從Unix紀元開始的跳秒數(參見time模塊)。如果文件不存在或者不可訪問,返回os.error

出現於版本2.3。

os.path.getsize(path)

返回path的大小,以字節爲單位。如果文件不存在或者不可訪問,返回os.error

出現於版本1.5.2。

os.path.isabs(path)

如果path是絕對路徑名,返回True在Unix上,這表示路徑以/開始;在Windows上,這表示路徑以\開始(在去掉可能的盤符後,如C:)。

os.path.isfile(path)

如果path是一個存在的普通文件,返回True它會跟隨符號鏈接,所以對相同的路徑,islink()isfile()可以同時爲真。

os.path.isdir(path)

如果path是一個存在的目錄,返回True它會跟隨符號鏈接,所以對於相同的路徑,islink()isdir()可以同時爲真。

如果path引用的目錄條目是個符號鏈接,返回True如果Python運行期不支持符號鏈接,則總是返回False

os.path.ismount(path)

如果路徑名path是一個mount point(掛載點),返回True掛載點是文件系統中的一點,不同的文件系統在此被掛載。它檢查path的父目錄path/..path是否在不同的設備上,或者檢查path/..path是否指向相同設備的相同i-node,——這可以檢查出Unix和POSIX變種下的掛載點。

os.path.join(path1[path2[...]])

將一個或多個路徑正確地連接起來。如果任何一個參數是絕對路徑,那之前的參數就會被丟棄,然後連接繼續(如果在Windows上,如果有盤符,盤符也會被丟棄)。返回的值是path1path2等等的連接,每個非空部分除了最後一個後面只跟隨一個目錄分隔符(os.sep)。(這意味着最後一部分爲空將導致路徑以分隔符結尾。)注意,在windows上, 由於每個盤符都是一個目錄,因此,os.path.join("c:", "foo") 將返回一個C盤的相對路徑,即基於C盤C:的絕對路徑 (c:\foo), 而非一個相對路徑c:foo.

os.path.normcase(path)

標準化路徑名的大小寫。在Unix和Mac OS X上,原樣返回路徑;在大小寫不敏感的系統上,將路徑名轉換成小寫。在Windows上,還會將斜線轉換成反斜線。

os.path.normpath(path)

標準化路徑名,合併多餘的分隔符和上層引用,這樣A//BA/B/A/./B 和A/foo/../B 都變成 A/B該字符串操作可能改變包含符號鏈接的路徑的含義。在Windows上,還會將斜線轉換成反斜線。若要標準化大小寫,請使用normcase()

os.path.realpath(path)

返回指定的文件名的規範名字,並消除路徑中遇到的任何符號鏈接(如果操作系統支持的話)。

出現於版本 2.2。

os.path.relpath(path[start])

返回自當前目錄或者可選的start 目錄的 path相對文件路徑。這只是單純的路徑計算:不會訪問文件系統以確認path 或者 start 的存在性或者屬性。

start 默認爲os.curdir

可用的平臺: Windows、 Unix。

出現於版本 2.6。

os.path.samefile(path1path2)

如果兩個路徑名參數引用的是相同的文件或目錄(由設備號和i-node號指示),則返回True如果在任一路徑上調用os.stat()失敗將拋出異常。

可用的平臺:Unix。

os.path.sameopenfile(fp1fp2)

如果描述符fp1 和fp2引用的是相同的文件,則返回True

可用的平臺:Unix。

os.path.samestat(stat1stat2)

如果文件信息元組stat1stat2引用的是相同的文件,則返回True這些結構可能是由os.fstat()os.lstat()或者os.stat()返回。該函數底層使用samefile() 和sameopenfile()實現比較。

可用的平臺:Unix。

os.path.split(path)

將路徑名path 分割成(head, tail),其中tail路徑名的最後一部分,head 是其之前的所有部分。tail部分永遠不會包含斜線;如果path以斜線結束,tail 將爲空。如果path中沒有斜線,head將爲空。如果path爲空,head 和 tail兩個都將爲空。尾部的斜線會從head中去除掉,除非它是根目錄(只包含一個或多個斜線的目錄)。對於所有情況,join(head, tail)都將返回一個和path相同的位置(但是表示的字符串可能不一樣)。另請參閱dirname() 和basename()函數。

os.path.splitdrive(path)

path分割成一個(drive, tail)對,其中drive是一個驅動器描述符或者空字符串。在沒有使用驅動器描述符的系統上,drive 將永遠是空字符串。無論哪一種情況,drive + tail將和 path相同。

出現於版本1.3。

os.path.splitext(path)

將路徑名path分割成一個(root, ext)對使得root + ext == pathext 爲空或者以點號開始並至多包含一個點。路徑名前面的點號將被忽略;splitext('.cshrc') 返回 ('.cshrc', ')

版本2.6 以後的變化:當點號是第一個字符時,早期的版本將產生一個空的root。

os.path.splitunc(path)

將 path 分隔成一個(unc, rest)對,unc 是UNC掛載點(例如r'\\hostmount'),rest 是路徑剩下的部分(例如r'\path\file.ext')。對於包含驅動器字母的路徑,unc將永遠是空字符串。

可用的平臺:Windows。

os.path.walk(pathvisitarg)

以 path 爲根目錄(如果 path 爲目錄,則包括它 本身),爲目錄樹中每一個目錄以(arg, dirname, names)參數調用函數visit參數 dirname 表示訪問的目錄,參數 names 列出該目錄中的文件(從os.listdir(dirname) 得到)。 visit 函數可以修改names 以改變dirname 下訪問的目錄集合,例如爲了避免訪問目錄樹中特殊部分。names 引用的對象必須使用del或者切片賦值就地修改。)

注意

指向目錄的符合鏈接不會被當作子目錄,因此 walk() 將不會訪問它們。To visit linked directories you must identify them with os.path.islink(file) and os.path.isdir(file), and invoke walk() as necessary.

注意

該函數已經被棄用,並且,爲了鼓勵使用 os.walk(),該函數在 Python 3 中已經被移除。

os.path.supports_unicode_filenames

如果可以使用任意Unicode 字符串作爲文件名則爲True(在文件系統強加的限制之內)。

出現於版本2.3.




發佈了23 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章