使用Python遞歸對(duì)文件進(jìn)行相關(guān)處理
在眾多Python應(yīng)用技巧中,對(duì)于文件操作的相關(guān)方法是一個(gè)比較重要的應(yīng)用技術(shù)。在這里我們會(huì)通過(guò)對(duì)Python遞歸的相關(guān)介紹,來(lái)了解一下其對(duì)文件操作所起到的作用,希望可以給大家?guī)?lái)一些幫助。#t#
Python遞歸在這里有兩個(gè)需求:
刪除某個(gè)目錄以及子目錄下的所有.svn文件
刪除某個(gè)文件夾下所有文件
在Python中,Python遞歸中的文件操作主要來(lái)自os模塊,主要方法如下:
- os.listdir(dirname):列出dirname下的目錄和文件
- os.getcwd():獲得當(dāng)前工作目錄
- os.curdir:返回當(dāng)前目錄('.')
- os.chdir(dirname):改變工作目錄到dirname
- os.path.isdir(name):判斷name是不是一個(gè)目錄,name不是目錄就返回false
- os.path.isfile(name):判斷name是不是一個(gè)文件,不存在name也返回false
- os.path.exists(name):判斷是否存在文件或目錄name
- os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
- os.path.abspath(name):獲得絕對(duì)路徑
- os.path.normpath(path):規(guī)范path字符串形式
- os.path.split(name):分割文件名與目錄
(事實(shí)上,如果你完全使用目錄,它也會(huì)將最后一個(gè)目錄作為文件名而分離,
同時(shí)它不會(huì)判斷文件或目錄是否存在) - os.path.splitext():分離文件名與擴(kuò)展名
- os.path.join(path,name):連接目錄與文件名或目錄
- os.path.basename(path):返回文件名
- os.path.dirname(path):返回文件路徑
- os.remove(dir) #dir為要?jiǎng)h除的文件夾或者文件路徑
- os.rmdir(path) #path要?jiǎng)h除的目錄的路徑。需要說(shuō)明的是,
使用os.rmdir刪除的目錄必須為空目錄,否則函數(shù)出錯(cuò)。
Python遞歸刪除目錄下的svn代碼:
- #!/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)
以上就是我們對(duì)Python遞歸的相關(guān)介紹。