思路:

遍历文件夹下面的文件夹

如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除)

删除此文件夹

如果文件夹名称不等于".svn",则递归上面的方法

Python的实现

代码

import os

import shutil

import os.path

import stat

rootdir="F:\\work\\Test"

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,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

os.system('attrib -r ' + parent + '\\*.* /s') 设置文件夹可写

shutil.rmtree(parent+os.sep+dirname) 删除文件夹(即使文件夹里面有文件)

例二:

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可以是目录名也可以是文件名。

2. 函数chdir的作用是切换到指定目录,该参数必须是有效的且有访问权限的相对路径或绝对路径。

3. 函数的第五行,使用getcwd函数也是为了取得当前绝对路径。

4. 加号作为字符串的连接符。os.sep根据你的操作系统给出目录分隔符,在GNU/Linux和UNIX上它的返回值是'/',在windows上它的返回值是'\\',在Mac OS上是‘:',使用os.sep而不直接使用字符,会提高程序的可移植性。

5. 递归调用后,一定不能忘了os.chdir(os.pardir),返回上层目录(即父目录)。

重要:

1. 理解for中的两个并列的if语句,并列是为了解决目标是文件夹时,该目标文件夹中包含符合要求的文件夹。

2. 如果指定目录中存在访问受限的文件或文件夹,该程序会失败,返回无权访问信息。

例三:

Python递归遍历文件夹,寻找包含某个字符串的文本文件

linux下,如果不使用eclipse的话,想查找某个字符串在哪些文件中出现过就很麻烦,自己写了这个脚本在编码时使用,挺方便的。如果某个文本文件中包含的话,则只记录出现第一次的行数输出

使用方法:

python xxx.py 路径 字符串

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])

python批量删除文件1001python批量删除文件_Python实现递归遍历文件夹并删除文件...相关推荐

  1. linux sed 目录递归,shell递归遍历目录下的所有文件并统一改名的方法-文件更名...

    对Linux开发技术感兴趣或者是从事Linux开发技术的小伙伴是否知道如何把某个目录下的每个文件统一在名字前加上"abc",用shell实现呢?下面就随Linux培训小编来了解一下 ...

  2. java 递归 遍历目录下的所有文件

    public class Demo{static int level;public static void main(String[] args) throws IOException {//利用递归 ...

  3. 递归 遍历目录下的所有文件

    public class Demo{static int level;public static void main(String[] args) throws IOException {//利用递归 ...

  4. python递归遍历目录_Python实现递归遍历文件夹并删除文件

    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...

  5. Java之递归遍历目录,修改指定文件的指定内容

    EditProperties.java 1 package PropertiesOperation.Edit; 2 3 import java.io.File; 4 5 /** 6 * 替换指定Por ...

  6. windows系统下递归遍历目录下的所有文件

    c++代码如下: int GetAllFilepathFromfolder(char* Path) {char szFind[MAX_PATH];WIN32_FIND_DATA FindFileDat ...

  7. python 递归遍历目录排序_python下递归遍历目录和文件

    方法一:递归调用: import os def dirlist(path, allfile): filelist =  os.listdir(path) for filename in filelis ...

  8. python 读取文件到字典读取顺序_Python用list或dict字段模式读取文件的方法

    前言 Python用于处理文本数据绝对是个利器,极为简单的读取.分割.过滤.转换支持,使得开发者不需要考虑繁杂的流文件处理过程(相对于JAVA来说的,嘻嘻).博主自己工作中,一些复杂的文本数据处理计算 ...

  9. python标准库os中用来列出指定_Python 标准库 os 中用来列出指定文件夹中的文件和子文件夹列表的方式是listdir()。_高职高专数字资源平台答案_学小易找答案...

    [单选题]以下哪种不是不饱和脂肪酸( ) (2.0分) [名词解释]酶的活性中心 [简答题]6.举例说明酶的结构和功能之间的相互关系. [单选题]下列( )是脂肪酸 (2.0分) [简答题]7.试述维 ...

最新文章

  1. 古城钟楼微博:葡萄城程序员演练技术的产物
  2. ffmpeg:Codec for stream 0 does not use global headers but container format requires global headers
  3. nginx配置反向代理示例
  4. 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
  5. 转载 cglib代理和java代理
  6. why settype transport is not available in AG9 but works in AG3
  7. 使用Maven程序集创建漏洞评估工件
  8. 前端面试之前要准备的那些事
  9. Centos7 使用Docker MySQL部署_01
  10. raft协议 MySQL 切换_Raft 协议实战系列(二)—— 选主
  11. 数字图像处理(五)——形态学
  12. SqlServer 按指定顺序进行排序
  13. Java编程思想读书笔记(一)第1~13、16章
  14. 安装SQLyog教程
  15. 如何用SEGGER工具烧写程序,烧写地址详解
  16. 什么是盒子模型,盒子模型,标准盒模型,怪异盒模型,两种盒模型的区别,box-sizing属性
  17. emacs terminal
  18. 毕业季:我和未来有个对话
  19. 深入研究webrtc平滑发送(paced sender)
  20. linux eclipse glib.h,eclipse Glib

热门文章

  1. html页面怎样禁止复制粘贴,javascript中如何禁止复制粘贴?
  2. mysql菜鸟教程update_PHP MySQL Update
  3. 三态门有一个信号控制端en_W25Q32JVSSIQ|哪些PCB设计会影响信号质量?
  4. 帝国cms二次开发之文件夹的功能说明
  5. module ‘brotli‘ has no attribute ‘error
  6. Transformer LambdaNetworks
  7. HRNet-Facial-Landmark-Detection 人脸关键点
  8. pybind 编码h264
  9. OSError: exception: access violation reading 0x0000000000000001
  10. device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/dev