Python实现递归遍历文件夹并删除文件
|
思路: 遍历文件夹下面的文件夹 Python的实现 代码
import os
import shutil
import os.path
import stat
rootdir="F:workTest"
for parent,dirnames,filenames in os.walk(rootdir): #遍历文件夹下面的所有文件夹
for dirname in dirnames:
if dirname=='.svn':
strfilepath=parent+os.sep+dirname
if os.path.isdir(strfilepath):
os.system('attrib -r ' + parent + '*.* /s')#设置本文件夹可写
os.system('attrib -r ' + strfilepath + '*.* /s')#设置父文件夹可写
shutil.rmtree(parent+os.sep+dirname)#删除此文件夹
要点: Walk在os模块下面,用来根据提供的文件夹生成一个generator。每次可以得到一个三元tupple,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。 例二: Python实现递归遍历指定文件目录(startdir),从而找到所有与指定的文件或目录(target)名相同的文件或目录的绝对路径。 scandir.py :
#! /usr/bin/python
# filename : scandir.py
# author : Jesse
# update : 2011/08/15 10:16
import os
def scandir(startdir,target) :
os.chdir(startdir)
for obj in os.listdir(os.curdir) :
if obj == target :
print os.getcwd() + os.sep + obj
if os.path.isdir(obj) :
scandir(obj,target)
os.chdir(os.pardir) #!!!
startdir = raw_input('Please input startdir: ')
target = raw_input('Please input target: ')
scandir(startdir,target)
关于该程序的一点说明: 1. 函数scandir的形参target可以是目录名也可以是文件名。 重要: 1. 理解for中的两个并列的if语句,并列是为了解决目标是文件夹时,该目标文件夹中包含符合要求的文件夹。 例三: Python递归遍历文件夹,寻找包含某个字符串的文本文件 linux下,如果不使用eclipse的话,想查找某个字符串在哪些文件中出现过就很麻烦,自己写了这个脚本在编码时使用,挺方便的。如果某个文本文件中包含的话,则只记录出现第一次的行数输出 python search_content.py /home/www/ abcdefg search_content.py
#!/use/bin/env python
#-*- coding:utf-8 -*-
import sys,os
filterType = ['gif','png','bmp','jpg','jpeg','rar','zip','ico','apk','ipa','doc','docx','xls','jar','xlsx','ppt','pptx','pdf','gz','pyc','class']
num = 0
def search(path=None,cont=None):
if not path or not cont:
print('path or searchString is empty')
return
global num
_loopFolder(path,cont)
print("%s file find" % num)
def _loopFolder(path,cont):
arr = path.split('/')
if not arr[-1].startswith('.'): #不检查隐藏文件夹
if os.path.isdir(path):
folderList = os.listdir(path)
for x in folderList:
_loopFolder(path+"/"+x,cont)
elif os.path.isfile(path):
_verifyContent(path,cont)
def _verifyContent(path,cont):
if path.split('.')[-1].lower() in filterType:
return
global num
fh = open(path,'r')
fhContent = fh.readlines()
fh.close()
for index,x in enumerate(fhContent):
if cont in x:
num += 1
print("%s %s" % (path,index+1))
break
return
if __name__ == "__main__":
if len(sys.argv) < 3:
print("invalid parameters")
else:
search(sys.argv[1],sys.argv[2])
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
