python?文件和路徑操作函數(shù)小結(jié)(轉(zhuǎn)載)

想入門(mén)python圖像處理,一些涉及到保存路徑的操作,split/splitext/dirname/basename,搜了一些文件路徑操作函數(shù)使用方法,mark.

//====//

1: os.listdir(path) //path為目錄

功能相當(dāng)于在path目錄下執(zhí)行dir命令,返回為list類(lèi)型

print os.listdir('..')

2: os.path.walk(path,visit,arg)

path :是將要遍歷的目錄

visit :是一個(gè)函數(shù)指針,函數(shù)圓形為:

callback(arg,dir,fileList)

其中arg為為傳給walk的arg , dir是path下的一個(gè)目錄,fileList為dir下的文件和目錄組成的list, arg:傳給visit用的

3:os.path.split(path)

path 為一個(gè)路徑,

輸出,把path分成兩部分,具體看實(shí)例:

print os.path.split("abc/de.txt")

('abc', 'de.txt')

os.path.split("abc")

(", 'abc')

print os.path.split("de/abc/de")

('de/abc', 'de')

4: os.path.splitext(filename)

把文件名分成文件名稱(chēng)和擴(kuò)展名

os.path.splitext(abc/abcd.txt)

('abc/abcd', '.txt')

5: os.path.dirname(path)

把目錄名提出來(lái)

print os.path.dirname("abc")

#輸出為空

print os.path.dirname('abc\def')

abc

6: os.path.basename(filename)

取得主文件名

print os.path.basename('abc')

abc

print os.path.basename('abc.txt')

abc

print os.path.basename('bcd/abc')

abc #這個(gè)需要注意不包括目錄名稱(chēng)

print os.path.basename('.')

.

7:os.mkdir(path, [mode])

path為目錄名: 這里有個(gè)要求,只能創(chuàng)建一級(jí)目錄

比如path為 abc/def 則當(dāng)前目錄下必須存在abc 否則失敗

8: os.makedirs(path [,mode])

可以創(chuàng)建多級(jí)目錄

9:os.remove(path)刪除一個(gè)文件,一定是一個(gè)文件

os.removedirs(path) 刪除一個(gè)目錄下所有東西

os.rmdir(path) 刪除一個(gè)目錄,而且一定要空,否則os.errer

10:os.walk(path)

遍歷path,返回一個(gè)對(duì)象,他的每個(gè)部分都是一個(gè)三元組

('目錄x',[目錄x下的目錄list],目錄x下面的文件)

舉例:

a = os.walk('.')

for i in a:

print i

11:shutil.copy(src,dst)

把文件src內(nèi)容拷貝到文件dst中。,目標(biāo)區(qū)域必須可以寫(xiě),如果dst存在,則dst被覆蓋

――――――――――――――――――

11.1 os.path -- 普通的路徑名操作

這個(gè)模塊實(shí)現(xiàn)一些在路徑名稱(chēng)上有用的函數(shù)。

警告:在 Windows 上,這些函數(shù)中的多個(gè)不能正確地支持 UNC 路徑名。splitunc() 和 ismount() 可以正確地處理它們。

abspath(path)

返回 path 路徑名一個(gè)規(guī)格化的絕對(duì)化的版本。在大多數(shù)平臺(tái)上,相當(dāng)于normpath(join(os.getcwd(), path))。1.5.2版本中的新特性。

basename(path)

返回 path 路徑名最底部的名稱(chēng)。這是由 split(path)返回的對(duì)的第二半部分。注意這個(gè)函數(shù)的結(jié)果不同于Unix basename 程序;UNIX的 basename對(duì)于'/foo/bar/' 返回 'bar',basename() 函數(shù)返回一個(gè)空字符串('')。

commonprefix(list)

返回最長(zhǎng)的路徑前綴(采取字符的字符),是 list中所有路徑的一個(gè)前綴。如果 list 為空,返回空字符串('')。注意可以返回?zé)o效的路徑因?yàn)樗看尾僮饕粋€(gè)字符。

dirname(path)

返回 path 路徑名的目錄名稱(chēng)。這是由 split(path)返回的對(duì)的第一半部分。

exists(path)

如果 path 與一個(gè)已存在的路徑關(guān)聯(lián)返回True。對(duì)于損壞的符號(hào)連接返回 False 。在一些平臺(tái)上,如果權(quán)限沒(méi)有被授予在請(qǐng)求的文件上執(zhí)行os.stat()這個(gè)函數(shù)可能返回False,即使該 path 實(shí)際上存在。

lexists(path)

如果 path 與一個(gè)已存在的路徑關(guān)聯(lián)返回 True 。對(duì)于損壞的連接返回 True 。在一些缺少 os.lstat()的平臺(tái)上相當(dāng)于 exists() 。2.4版本中的新特性。

expanduser(path)

在 Unix上,返回 "~"或"~user"做為替換用戶(hù)的主目錄的開(kāi)始部分的參數(shù)。開(kāi)始的"~" 通過(guò)環(huán)境變量 HOME(如果它被設(shè)置)替換; 否則當(dāng)前用戶(hù)的主目錄在口令目錄中通過(guò)內(nèi)置模塊 pwd被查詢(xún)。開(kāi)始的"~user" 直接地在口令目錄中被查詢(xún)。

在 Windows 上,僅支持 "~" ;它通過(guò)環(huán)境變量 HOME 或通過(guò)HOMEDRIVE 和 HOMEPATH的組合替換。

如果該擴(kuò)充失敗或如果該路徑不以一個(gè)波浪號(hào)開(kāi)始,被返回的路徑無(wú)改變。

expandvars(path)

返回使用環(huán)境變量擴(kuò)充的參數(shù)。"$name" 或 "${name}"格式的子串通過(guò)環(huán)境變量 name 的值被替換。殘缺的變量名稱(chēng)和引用不存在的變量被無(wú)改變的遺棄。

getatime(path)

返回 path 的最后訪問(wèn)時(shí)間。返回的值是一個(gè)從新紀(jì)元開(kāi)始的秒數(shù)(參見(jiàn) time 模塊)。如果文件不存在或不可訪問(wèn)掛起 os.error 。1.5.2版本中的新特性。2.3版本中的改變:如果 os.stat_float_times() 返回True,結(jié)果是一個(gè)浮點(diǎn)數(shù)。

getmtime(path)

返回 path 最后修改的時(shí)間。返回值是一個(gè)從新紀(jì)元開(kāi)始的秒數(shù)(參見(jiàn) time 模塊)。如果文件不存在或不可訪問(wèn)掛起 os.error 。1.5.2版本中的新特性。2.3版本中的改變:如果 os.stat_float_times() 返回True,結(jié)果是一個(gè)浮點(diǎn)數(shù)。

getctime(path)

返回系統(tǒng)的 ctime ,在一些系統(tǒng)上 (像Unix) 是最后改變的時(shí)間,在其他一些系統(tǒng)上 (像Windows),是 path 創(chuàng)建的時(shí)間。返回值是一個(gè)從新紀(jì)元開(kāi)始的秒數(shù)(參見(jiàn) time 模塊)。如果文件不存在或不可訪問(wèn)掛起 os.error 。2.3版本中的新特性。

getsize(path)

以字節(jié)為單位,返回 path 的大小。如果文件不存在或不可訪問(wèn)掛起 os.error 。1.5.2版本中的新特性。

isabs(path)

如果 path 是一個(gè)絕對(duì)路徑名返回True (以一個(gè)斜杠開(kāi)始)。

isfile(path)

如果 path 是一個(gè)已存在的普通文件返回True 。這效仿符號(hào)連接,因此 islink() 和 isfile() 對(duì)于相同的路徑都可以返回 true 。

isdir(path)

如果 path 是一個(gè)已存在的目錄返回 True 。這效仿符號(hào)鏈接,因此 islink() 和 isdir() 對(duì)于相同的路徑都可以返回 true 。

islink(path)

如果 path 引用一個(gè)目錄項(xiàng),它是一個(gè)符號(hào)連接,返回True。如果不支持符號(hào)連接始終返回 False 。

ismount(path)

如果路徑名 path是一個(gè) 掛載點(diǎn) 返回 True :在文件系統(tǒng)中的那個(gè)點(diǎn)一個(gè)不同的文件系統(tǒng)已經(jīng)被掛載。這個(gè)函數(shù)檢測(cè)是否 path的父路徑, path/..,和 path 是一個(gè)不同的設(shè)備,或是否 path/.. 和 path 在相同的設(shè)備上指向相同的i-node -- 這應(yīng)該是為所有的 Unix 和 POSIX 變種檢測(cè)掛載點(diǎn)。

join(path1[, path2[, ...]])

智能化地連接一個(gè)或多個(gè)路徑組件。如果任一組件是一個(gè)絕對(duì)路徑,所有前面的組件被丟棄(在Windows 上,包括前面的驅(qū)動(dòng)器名,如果有) ,并且繼續(xù)連接。返回的值是 path1,和可選地 path2等的組合,正確地以一個(gè)目錄分隔符 (os.sep)插入到兩個(gè)組件之間,除非 path2 為空。注意在 Windows 上,因?yàn)槊總€(gè)驅(qū)動(dòng)器有一個(gè)當(dāng)前目錄,os.path.join("c:", "foo")表示相對(duì)于驅(qū)動(dòng)器 C: 上的當(dāng)前目錄的一個(gè)路徑(c:foo),而不是 c:\\foo。

normcase(path)

標(biāo)準(zhǔn)化一個(gè)路徑名的大小寫(xiě)。在Unix上,返回未改變的路徑;在不區(qū)分大小寫(xiě)的文件系統(tǒng)上,它轉(zhuǎn)換路徑為小寫(xiě)字母。在Windows上 ,它也轉(zhuǎn)換正斜杠為反斜杠。

normpath(path)

標(biāo)準(zhǔn)化一個(gè)路徑名。折疊多余(或冗長(zhǎng)的)分隔符并且定位于外層引用,以致于 A//B,A/./B 和 A/foo/../B 都變成 A/B。它不標(biāo)準(zhǔn)化大小寫(xiě)(標(biāo)準(zhǔn)化大小寫(xiě)用 normcase())。在Windows上,它轉(zhuǎn)換正斜杠為反斜杠。如果它包含符號(hào)連接,它應(yīng)該明白這可能改變路徑的意圖!

realpath(path)

返回指定的文件名標(biāo)準(zhǔn)的路徑,除去在路徑中遇到的任何符號(hào)連接(如果操作系統(tǒng)支持)。2.2版本中的新特性。

samefile(path1, path2)

如果路徑名參數(shù)與相同的文件或目錄關(guān)聯(lián)返回 True (通過(guò)設(shè)備號(hào)和 i-node 數(shù)表示)。如果 os.stat() 調(diào)用每個(gè)路徑名失敗掛起一個(gè)異常。有效的:Macintosh,Unix。

sameopenfile(fp1, fp2)

如果文件描述符 fp1 和 fp2 與相同的文件關(guān)連返回 True 。有效的:Macintosh,Unix。

samestat(stat1, stat2)

如果 stat 元組 stat1和stat2 與相同的文件關(guān)連返回 True 。這個(gè)結(jié)構(gòu)可能由fstat(),lstat(),或stat()返回。這個(gè)函數(shù)使用samefile() 和 sameopenfile()實(shí)現(xiàn)了基本的比較。有效的:Macintosh,Unix。

split(path)

分割路徑名 path 到一個(gè)對(duì)中,(head, tail)中 tail 是最后的路徑名組件head 是引導(dǎo)它的任何事物。tail 部分將一直都不包括斜線;如果 path 以一個(gè)斜線結(jié)尾,tail 將為空。如果 path 中沒(méi)有斜線,head 將為空。如果 path 為空,head 和 tail 都為空。尾隨斜線從 head 中被去除,除非它是根(one or more slashes only)。在幾乎所有的情況中,join(head, tail) 相當(dāng)于 path (只有一個(gè)例外是當(dāng)從 tail 中 head 被多個(gè)斜線分割時(shí))。

splitdrive(path)

分割路徑名 path 到一個(gè)(drive, tail) 對(duì)中,drive 是每個(gè)驅(qū)動(dòng)器的說(shuō)明或空字符串。在系統(tǒng)上不使用驅(qū)動(dòng)器說(shuō)明的,drive 將一直是空字符。在所有情況中,drive + tail 將和 path 相同。1.3版本中的新特性。

splitext(path)

分割路徑名 path 到一對(duì) (root, ext) 中以致 root + ext == path,并且ext 為空或以一個(gè)句點(diǎn)開(kāi)始并且只多包含一個(gè)句點(diǎn)。

splitunc(path)

分割路徑名 path 到一個(gè)對(duì)(unc, rest)中以便于 unc 是 UNC 掛載點(diǎn) (諸如 r'\\host\mount'),如果,并且 rest 路徑的其余部分(諸如 r'\path\file.ext')。對(duì)于路徑包含驅(qū)動(dòng)器名,unc 將一直是空字符。有效的:Windows。

walk(path, visit, arg)

對(duì)于以 path 為根的目錄樹(shù)中的每一個(gè)目錄 (包含 path 自身,如果它是一個(gè)目錄),以參數(shù) (arg, dirname, names)調(diào)用函數(shù) visit 。參數(shù) dirname 指定訪問(wèn)的目錄,參數(shù) names 列出在目錄中的文件(從 os.listdir(dirname)中得到)。visit 函數(shù)可以修改 names 改變 dirname 下面訪問(wèn)的目錄的設(shè)置,例如,避免訪問(wèn)樹(shù)的某一部分。(由 names 關(guān)連的對(duì)象必須在合適的位置被修改,使用 del 或 slice 指派。)

注意:符號(hào)連接到目錄不被作為一個(gè)子目錄處理,并且因此 walk()將不訪問(wèn)它們。訪問(wèn)連接的目錄你必須以os.path.islink(file) 和 os.path.isdir(file)標(biāo)識(shí)它們,并且必須調(diào)用walk() 。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,973評(píng)論 19 139
  • os.path.abspath(path) #返回絕對(duì)路徑 os.path.basename(path) #返回文...
    qtruip閱讀 2,973評(píng)論 1 4
  • os模塊簡(jiǎn)介: OS模塊是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)用于訪問(wèn)操作系統(tǒng)功能的模塊,OS模塊提供了一種可移...
    翟振光閱讀 5,061評(píng)論 0 6
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 6,537評(píng)論 0 17
  • Pythos中調(diào)用操作系統(tǒng)的模塊,提供對(duì)操作系統(tǒng)進(jìn)行調(diào)用的接口 API方法 os.getcwd() 獲取當(dāng)前工作目...
    So_ProbuING閱讀 2,298評(píng)論 0 4