Python模塊之遞歸處理文件和文件夾

這裏有兩個需求: 刪除某個目錄以及子目錄下的全部.svn文件 刪除某個文件夾下全部文件 在Python中,文件操做主要來自os模塊,主要方法以下:python

os.listdir(dirname):列出dirname下的目錄和文件svn

os.getcwd():得到當前工做目錄函數

os.curdir:返回當前目錄('.')spa

os.chdir(dirname):改變工做目錄到dirnamecode

os.path.isdir(name):判斷name是否是一個目錄,name不是目錄就返回falseorm

os.path.isfile(name):判斷name是否是一個文件,不存在name也返回falseutf-8

os.path.exists(name):判斷是否存在文件或目錄namerem

os.path.getsize(name):得到文件大小,若是name是目錄返回0L字符串

os.path.abspath(name):得到絕對路徑get

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):返回文件路徑

os.remove(dir) #dir爲要刪除的文件夾或者文件路徑 os.rmdir(path) #path要刪除的目錄的路徑。須要說明的是,使用os.rmdir刪除的目錄必須爲空目錄,不然函數出錯。 刪除目錄下的svn代碼: 這裏有兩個需求: 刪除某個目錄以及子目錄下的全部.svn文件 刪除某個文件夾下全部文件 在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):返回文件路徑

os.remove(dir) #dir爲要刪除的文件夾或者文件路徑 os.rmdir(path) #path要刪除的目錄的路徑。須要說明的是,使用os.rmdir刪除的目錄必須爲空目錄,不然函數出錯。 刪除目錄下的svn代碼:

<!-- lang: python -->
#!/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) count += 1 return count if len(sys.argv) != 2: print "Usage: python cleansvn.py path" sys.exit(1) walk(sys.argv[1]) <!-- lang: python --> #!/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) count += 1 return count if len(sys.argv) != 2: print "Usage: python cleansvn.py path" sys.exit(1) walk(sys.argv[1])

刪除某目錄下全部文件和文件夾:

#!/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)
相關文章
相關標籤/搜索