天天看點

python檔案和路徑操作

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

功能相當于在path目錄下執行dir指令,傳回為list類型

print os.listdir('..')

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

path :是将要周遊的目錄

visit :是一個函數指針,函數圓形為:

callback(arg,dir,fileList)

其中arg為為傳給walk的arg , dir是path下的一個目錄,fileList為dir下的檔案和目錄組成的list, arg:傳給visit用的

3:os.path.split(path)

path 為一個路徑,

輸出,把path分成兩部分,具體看執行個體:

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)

把檔案名分成檔案名稱和擴充名

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

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

5: os.path.dirname(path)

把目錄名提出來

print os.path.dirname("abc")

#輸出為空

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

abc

6: os.path.basename(filename)

取得主檔案名

print os.path.basename('abc')

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

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

abc #這個需要注意不包括目錄名稱

print os.path.basename('.')

.

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

path為目錄名: 這裡有個要求,隻能建立一級目錄

比如path為 abc/def 則目前目錄下必須存在abc 否則失敗

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

可以建立多級目錄

9:os.remove(path)删除一個檔案,一定是一個檔案

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

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

10:os.walk(path)

周遊path,傳回一個對象,他的每個部分都是一個三元組

('目錄x',[目錄x下的目錄list],目錄x下面的檔案)

舉例:

a = os.walk('.')

for i in a:

print i

11:shutil.copy(src,dst)

把檔案src内容拷貝到檔案dst中。,目标區域必須可以寫,如果dst存在,則dst被覆寫

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

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

這個子產品實作一些在路徑名稱上有用的函數。

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

abspath(path)

    傳回 path 路徑名一個規格化的絕對化的版本。在大多數平台上,相當于normpath(join(os.getcwd(), path))。1.5.2版本中的新特性。

basename(path)

    傳回 path 路徑名最底部的名稱。這是由 split(path)傳回的對的第二半部分。注意這個函數的結果不同于Unix basename 程式;UNIX的 basename對于'/foo/bar/' 傳回 'bar',basename() 函數傳回一個空字元串('')。

commonprefix(list)

    傳回最長的路徑字首(采取字元的字元),是 list中所有路徑的一個字首。如果 list 為空,傳回空字元串('')。注意可以傳回無效的路徑因為它每次操作一個字元。

dirname(path)

    傳回 path 路徑名的目錄名稱。這是由 split(path)傳回的對的第一半部分。

exists(path)

    如果 path 與一個已存在的路徑關聯傳回True。對于損壞的符号連接配接傳回 False 。在一些平台上,如果權限沒有被授予在請求的檔案上執行os.stat()這個函數可能傳回False,即使該 path 實際上存在。

lexists(path)

    如果 path 與一個已存在的路徑關聯傳回 True 。對于損壞的連接配接傳回 True 。在一些缺少 os.lstat()的平台上相當于 exists() 。2.4版本中的新特性。

expanduser(path)

    在 Unix上,傳回 "~"或"~user"做為替換使用者的主目錄的開始部分的參數。開始的"~" 通過環境變量 HOME(如果它被設定)替換; 否則目前使用者的主目錄在密碼目錄中通過内置子產品 pwd被查詢。開始的"~user" 直接地在密碼目錄中被查詢。

    在 Windows 上,僅支援 "~" ;它通過環境變量 HOME 或通過HOMEDRIVE 和 HOMEPATH的組合替換。

    如果該擴充失敗或如果該路徑不以一個波浪号開始,被傳回的路徑無改變。

expandvars(path)

    傳回使用環境變量擴充的參數。"$name" 或 "${name}"格式的子串通過環境變量 name 的值被替換。殘缺的變量名稱和引用不存在的變量被無改變的遺棄。

getatime(path)

    傳回 path 的最後通路時間。傳回的值是一個從新紀元開始的秒數(參見 time 子產品)。如果檔案不存在或不可通路挂起 os.error 。1.5.2版本中的新特性。2.3版本中的改變:如果 os.stat_float_times() 傳回True,結果是一個浮點數。

getmtime(path)

    傳回 path 最後修改的時間。傳回值是一個從新紀元開始的秒數(參見 time 子產品)。如果檔案不存在或不可通路挂起 os.error 。1.5.2版本中的新特性。2.3版本中的改變:如果 os.stat_float_times() 傳回True,結果是一個浮點數。

getctime(path)

    傳回系統的 ctime ,在一些系統上 (像Unix) 是最後改變的時間,在其他一些系統上 (像Windows),是 path 建立的時間。傳回值是一個從新紀元開始的秒數(參見 time 子產品)。如果檔案不存在或不可通路挂起 os.error 。2.3版本中的新特性。

getsize(path)

    以位元組為機關,傳回 path 的大小。如果檔案不存在或不可通路挂起 os.error 。1.5.2版本中的新特性。

isabs(path)

    如果 path 是一個絕對路徑名傳回True (以一個斜杠開始)。

isfile(path)

    如果 path 是一個已存在的普通檔案傳回True 。這效仿符号連接配接,是以 islink() 和 isfile() 對于相同的路徑都可以傳回 true 。

isdir(path)

    如果 path 是一個已存在的目錄傳回 True 。這效仿符号連結,是以 islink() 和 isdir() 對于相同的路徑都可以傳回 true 。

islink(path)

    如果 path 引用一個目錄項,它是一個符号連接配接,傳回True。如果不支援符号連接配接始終傳回 False 。

ismount(path)

    如果路徑名 path是一個 挂載點 傳回 True :在檔案系統中的那個點一個不同的檔案系統已經被挂載。這個函數檢測是否 path的父路徑, path/..,和 path 是一個不同的裝置,或是否 path/.. 和 path 在相同的裝置上指向相同的i-node -- 這應該是為所有的 Unix 和 POSIX 變種檢測挂載點。

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

    智能化地連接配接一個或多個路徑元件。如果任一元件是一個絕對路徑,所有前面的元件被丢棄(在Windows 上,包括前面的驅動器名,如果有) ,并且繼續連接配接。傳回的值是 path1,和可選地 path2等的組合,正确地以一個目錄分隔符 (os.sep)插入到兩個元件之間,除非 path2 為空。注意在 Windows 上,因為每個驅動器有一個目前目錄,os.path.join("c:", "foo")表示相對于驅動器 C: 上的目前目錄的一個路徑(c:foo),而不是 c:\\foo。

normcase(path)

    标準化一個路徑名的大小寫。在Unix上,傳回未改變的路徑;在不區分大小寫的檔案系統上,它轉換路徑為小寫字母。在Windows上 ,它也轉換正斜杠為反斜杠。

normpath(path)

    标準化一個路徑名。折疊多餘(或冗長的)分隔符并且定位于外層引用,以緻于 A//B,A/./B 和 A/foo/../B 都變成 A/B。它不标準化大小寫(标準化大小寫用 normcase())。在Windows上,它轉換正斜杠為反斜杠。如果它包含符号連接配接,它應該明白這可能改變路徑的意圖!

realpath(path)

    傳回指定的檔案名标準的路徑,除去在路徑中遇到的任何符号連接配接(如果作業系統支援)。2.2版本中的新特性。

samefile(path1, path2)

    如果路徑名參數與相同的檔案或目錄關聯傳回 True (通過裝置号和 i-node 數表示)。如果 os.stat() 調用每個路徑名失敗挂起一個異常。有效的:Macintosh,Unix。

sameopenfile(fp1, fp2)

    如果檔案描述符 fp1 和 fp2 與相同的檔案關連傳回 True 。有效的:Macintosh,Unix。

samestat(stat1, stat2)

    如果 stat 元組 stat1和stat2 與相同的檔案關連傳回 True 。這個結構可能由fstat(),lstat(),或stat()傳回。這個函數使用samefile() 和 sameopenfile()實作了基本的比較。有效的:Macintosh,Unix。

split(path)

    分割路徑名 path 到一個對中,(head, tail)中 tail 是最後的路徑名元件head 是引導它的任何事物。tail 部分将一直都不包括斜線;如果 path 以一個斜線結尾,tail 将為空。如果 path 中沒有斜線,head 将為空。如果 path 為空,head 和 tail 都為空。尾随斜線從 head 中被去除,除非它是根(one or more slashes only)。在幾乎所有的情況中,join(head, tail) 相當于 path (隻有一個例外是當從 tail 中 head 被多個斜線分割時)。

splitdrive(path)

    分割路徑名 path 到一個(drive, tail) 對中,drive 是每個驅動器的說明或空字元串。在系統上不使用驅動器說明的,drive 将一直是空字元。在所有情況中,drive + tail 将和 path 相同。1.3版本中的新特性。

splitext(path)

    分割路徑名 path 到一對 (root, ext) 中以緻 root + ext == path,并且ext 為空或以一個句點開始并且隻多包含一個句點。

splitunc(path)

    分割路徑名 path 到一個對(unc, rest)中以便于 unc 是 UNC 挂載點 (諸如 r'\\host\mount'),如果,并且 rest 路徑的其餘部分(諸如 r'\path\file.ext')。對于路徑包含驅動器名,unc 将一直是空字元。有效的:Windows。

walk(path, visit, arg)

    對于以 path 為根的目錄樹中的每一個目錄 (包含 path 自身,如果它是一個目錄),以參數 (arg, dirname, names)調用函數 visit 。參數 dirname 指定通路的目錄,參數 names 列出在目錄中的檔案(從 os.listdir(dirname)中得到)。visit 函數可以修改 names 改變 dirname 下面通路的目錄的設定,例如,避免通路樹的某一部分。(由 names 關連的對象必須在合适的位置被修改,使用 del 或 slice 指派。)

    注意:符号連接配接到目錄不被作為一個子目錄處理,并且是以 walk()将不通路它們。通路連接配接的目錄你必須以os.path.islink(file) 和 os.path.isdir(file)辨別它們,并且必須調用walk() 。

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。