幾個主要的函數:
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被覆蓋
上面的函數基本夠用
其它文件移動操作還請看:shutil模塊:High-level file operations