from http://blog.alexa-pro.cn/?p=189
1: os.listdir(path) //path爲目錄
功能相當於在path目錄下執行dir命令,返回爲list類型
print os.listdir('..')
輸出:
[a,b,c,d]
2: os.path.walk(path,visit,arg)
path :是將要遍歷的目錄
visit :是一個函數指針,函數圓形爲:
callback(arg,dir,fileList)
其中arg爲爲傳給walk的arg , dir是path下的一個目錄,fileList爲dir下的文件和目錄組成的list
arg:傳給visit用的,對walk沒有什麼作用
舉例:
def callback(arg,directory, files):
print directory,
print files,
print arg
print '——————–'
os.path.walk('.',callback, '123456′)
輸出:
. ['path0704.py', 'temp', '/xc2/xb7/xbe/xb6/xcf/xe0/xb9/xd8/xd1/xa7/xcf/xb0.txt'] 123456
——————–
./temp ['temp.h', 'temp1'] 123456
——————–
./temp/temp1 ['abc.bmp'] 123456
如果想找到某個目錄下所有文件,只需要在callback裏面,在fileList中找出文件,即可除此之外,還有一個函數可以用那就是os.walk,看10
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')
abc
print os.path.basename('abc.txt')
abc
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
輸出:
('.', ['abc', 'temp'], ['path0704.py', '/xc2/xb7/xbe/xb6/xcf/xe0/xb9/xd8/xd1/xa7/xcf/xb0.txt'])
('.//abc', [], ['/xd0/xc2/xbd/xa8 BMP /xcd/xbc/xcf/xf1.bmp'])
('.//temp', ['temp1'], ['temp.h'])
('.//temp//temp1′, [], ['abc.bmp'])
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() 。
注意:較新的 os.walk() 生成器支持相似的函數性並且可以被更容易的使用。