轉自:http://hi.baidu.com/wubotao/item/e7b68f952f326dbdcc80e54d
在Python中,檔案操作主要來自os模組,主要方法如下:
os.listdir(dirname):列出dirname下的目錄和檔案
os.getcwd():獲得當前工作目錄
os.curdir:返回目前的目錄('.')
os.chdir(dirname):改變工作目錄到dirname
os.path.isdir(name):判斷name是不是一個目錄,name不是目錄就返回false
os.path.isfile(name):判斷name是不是一個檔案,不存在name也返回false
os.path.exists(name):判斷是否存在檔案或目錄name
os.path.getsize(name):獲得檔案大小,如果name是目錄返回0L
os.path.abspath(name):獲得絕對路徑
os.path.normpath(path):規範path字串形式
os.path.split(name):分割檔案名稱與目錄(事實上,如果你完全使用目錄,它也會將最後一個目錄作為檔案名稱而分離,同時它不會判斷檔案或目錄是否存在)
os.path.splitext():分離檔案名稱與副檔名
os.path.join(path,name):串連目錄與檔案名稱或目錄
os.path.basename(path):返迴文件名
os.path.dirname(path):返迴文件路徑
#!/usr/bin/envpython
#-*- encoding:UTF-8 -*-
importos,time,stat
fileStats =os.stat ( 'test.txt') #擷取檔案/目錄的狀態
fileInfo = {
'Size':fileStats [ stat.ST_SIZE], #擷取檔案大小
'LastModified':time.ctime( fileStats [ stat.ST_MTIME ]),
#擷取檔案最後修改時間
'LastAccessed':time.ctime(fileStats [ stat.ST_ATIME ] ),
#擷取檔案最後訪問時間
'CreationTime':time.ctime( fileStats [ stat.ST_CTIME ]),
#擷取檔案建立時間
'Mode':fileStats [ stat.ST_MODE] #擷取檔案的模式
}
#print fileInfo
for field infileInfo: #顯示對象內容
print '%s:%s' % (field,fileInfo[field])
forinfoField,infoValue in fileInfo:
print '%s:%s' % (infoField,infoValue)
if stat.S_ISDIR ( fileStats [ stat.ST_MODE ]): #判斷是否路徑
print 'Directory. '
else:
print 'Non-directory.'
if stat.S_ISREG(fileStats [ stat.ST_MODE ]): #判斷是否一般檔案
print 'Regular file.'
elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ]): #判斷是否連結檔案
print 'Shortcut.'
elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ]): #判斷是否通訊端檔案
print 'Socket.'
elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ]): #判斷是否具名管道
print 'Named pipe.'
elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ]): #判斷是否塊裝置
print 'Block special device.'
elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ]): #判斷是否字元設定
print 'Character special device.'
os.remove(dir) #dir為要刪除的檔案夾或者檔案路徑
os.rmdir(path) #path要刪除的目錄的路徑。需要說明的是,使用os.rmdir刪除的目錄必須為空白目錄,否則函數出錯。
刪除目錄下的svn代碼:
Code
#!/usr/bin/env python
#coding=utf-8
import sys, os, stat
def walk(path):
for item in os.listdir(path):
subpath = os.path.join(path, item)
mode = os.stat(subpath)[stat.ST_MODE]
if stat.S_ISDIR(mode):
if item == ".svn":
print "Cleaning %s " %subpath
print "%d deleted" % purge(subpath)
else:
walk(subpath)
def purge(path):
count = 0
for item in os.listdir(path):
subpath = os.path.join(path, item)
mode = os.stat(subpath)[stat.ST_MODE]
if stat.S_ISDIR(mode):
count += purge(subpath)
else:
os.chmod(subpath, stat.S_IREAD|stat.S_IWRITE)
os.unlink(subpath)
count += 1
os.rmdir(path)
count += 1
return count
if len(sys.argv) != 2:
print "Usage: python cleansvn.py path"
sys.exit(1)
walk(sys.argv[1])
刪除某目錄下所有檔案和檔案夾:
Code
#!/usr/bin/env python
#coding=utf-8
import os
def delete_all_file(path):
"delete all folers and files"
if os.path.isfile(path):
try:
os.remove(path)
except:
pass
elif os.path.isdir(path):
for item in os.listdir(path):
itemsrc = os.path.join(path, item)
delete_all_file(itemsrc)
try:
os.rmdir(path)
except:
pass
if __name__ == "__main__":
dirname = r'F:\trunk'
print delete_all_file(dirname)