python递归遍历目录_Python实现递归遍历文件夹并删除文件
思路:
遍历文件夹下面的文件夹
如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除)
删除此文件夹
如果文件夹名称不等于".svn",则递归上面的方法
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import shutil
import os.path
import stat
rootdir="F:\\work\\Test"
for parent,dirnames,filenamesin os.walk(rootdir):#遍历文件夹下面的所有文件夹
for dirnamein 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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /usr/bin/python
# filename : scandir.py
# author : Jesse
# update : 2011/08/15 10:16
import os
def scandir(startdir, target) :
os.chdir(startdir)
for objin 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/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 pathor 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 xin 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,xin enumerate(fhContent):
if contin 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递归遍历目录_Python实现递归遍历文件夹并删除文件相关推荐
- android 文件 删除文件夹,android 删除文件以及递归删除文件夹
Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...
- linux里创建文件夹、创建文件夹子文件夹、删除文件夹和文件、访问指定目录级返回上一级目录
1.新建文件夹 2.删除文件 3.访问目录 一.新建文件夹 mkdir 命令是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用. 1.mkdir xxx:创建文件夹 ...
- python批量删除文件1001python批量删除文件_Python实现递归遍历文件夹并删除文件...
思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...
- java目录实用工具_JAVA 创建文件和文件夹,删除文件和文件夹的实用工具
package com.file; import java.io.File; import java.io.IOException; //创建新文件和目录 public class CCRDFile ...
- linux拷贝目录并修改名字,linux复制文件夹、重命名文件夹、删除文件夹
linux中复制命令为cp(即copy缩写),重命名使用mv命令(即move缩写)来实现,删除命令为rm(即remove缩写). 如果操作对象是单个文件,复制和删除以及重命名很简单,如下: cp a. ...
- C、 C++遍历文件夹,删除文件夹
1,使用SHFileOperation删除文件夹, bool CTools:: DelFilesOfDir(string strDir) {int iRet = ACCESS(strDir.c_str ...
- python删除文件代码_python2.7删除文件夹和删除文件代码实例
#!c:\python27\python.exe # -*- coding: utf-8 -*- import os import re from os import path from shutil ...
- python生成文件夹和删除文件夹
import os import shutil 生成文件夹 def tp(tp=None): os.makedirs(""+tp) # 生成文件夹位置的路径 删除文件夹 os.re ...
- python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料
复制代码代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ...
最新文章
- Django模板之django自带模板
- Server Tomcat v7.0 Server at localhost failed to start.解决办法(图文详解)
- BZOJ 4300: 绝世好题( dp )
- FTP 两种传输模式 Binary 和 ASCII 的区别
- php var_export与var_dump 输出的不同
- 智能优化算法之海豚回声定位(Dolphin echolocation,DE)
- 数据库课程设计:医院信息管理系统(pycharm+MySQL)
- 珠宝订货(订单)系统与ERP实现库存信息同步的实现方案分享
- 微信 打开html文件,微信文件在电脑上打开文件
- 深度研报:回顾「NFT」和「元宇宙」冰火两重天的11月
- [FAQ10019]HDMI/MHL如何修改手机默认横竖屏显示方式
- HTML5七夕情人节表白网页抖音超火的樱花雨3D相册 HTML+CSS+JavaScript
- android指南针Demo,谁有安卓简易指南针的DEmo
- Typora搭建图床解决上传md文档图片无法加载的问题
- java 实现 手机接收短信验证码功能
- Python实现图像直方图规定化(直方图匹配)-附完整代码
- acr38u PHP调用,ACS ACR38U-N1智能卡读卡器驱动
- 【python】python matplotlib绘制并保存多张图片+绘制多张子图
- 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(1)2022 紫光展锐(上)
- 300行代码带你进入叙/丽/亚轰炸战场
热门文章
- PHP读取TXT中文乱码的解决方法
- std::lexicographical_compare
- android开发之播放音乐的方法
- html中输出 u263c,二级C语言笔试必过399题
- python列表删除算法_关于算法:如何从python中的列表中删除重复的条目
- 随想录(产品-工程开发-算法)
- ftk学习记(button篇)
- php 转义字符处理,PHP转义与反转义字符串函数详解
- 小米不加入鸿蒙,是华为不给小米用鸿蒙,还是小米拒绝使用鸿蒙?
- python语言的多行注释以什么开头和结尾_Python单行注释与多行注释