os.path及其重要函數
(轉載於:http://www.cnblogs.com/dkblog/archive/2011/03/25/1995537.html)
- 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上,將使用HOME和USERPROFILE,如果它們被設置的話;否則使用HOMEPATH和HOMEDRIVE的組合。如果開頭是~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.islink(path)
-
如果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上,如果有盤符,盤符也會被丟棄)。返回的值是path1、path2等等的連接,每個非空部分除了最後一個後面只跟隨一個目錄分隔符(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//B, A/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(path1, path2)
-
如果兩個路徑名參數引用的是相同的文件或目錄(由設備號和i-node號指示),則返回True。如果在任一路徑上調用os.stat()失敗將拋出異常。
可用的平臺:Unix。
- os.path.sameopenfile(fp1, fp2)
-
如果描述符fp1 和fp2引用的是相同的文件,則返回True。
可用的平臺:Unix。
- os.path.samestat(stat1, stat2)
-
如果文件信息元組stat1和stat2引用的是相同的文件,則返回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 == path,ext 爲空或者以點號開始並至多包含一個點。路徑名前面的點號將被忽略;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(path, visit, arg)
-
以 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.