Python正则匹配递归获得给出目录下的特定类型的文件小技巧
需求是酱的:
输入一个目录,这个目录包含检测目录的必备信息但不准确需要获得后加工一下,如给出目录:C:\Program Files\Common Files\DESIGNER,需要检测的目录是:C:\Program Files\Common Files\System,即从给出的目录中获取前面的信息,后面的补上的目录(System)是指定的。从E:\res\tmp目录中检测xml文件,返回xml文件的目录
代码如下: 1 import os 2 import re
pathlist = []
patternxml = r'.+\.xml$' def collectxmlfile(path)
if re.search(r'\\Program Files\\Common Files',path)
path = path.split('Common Files')[0]
l = [path ,'\Common Files\System']
path = ''.join(l)
pathlistfinal = pathlist
for file in os.listdir(path):
file = os.path.join(path,file)
if (os.path.isdir(file) == False):
if (re.match(patternxml,file)):
pathlistfinal.append(file)
else:pass
else:
collectxmlfile(file)
return pathlistfinal
collectxmlfile(r'C:\Program Files\Common Files\DESIGNER')
这里面,为什么第二次递归到collectxmlfile()的时候不会search匹配上呢?
因为在第9行,Common前面多加了一个'\',这样第二次迭代的时候path中Common前面会有两个'\\',search中的r'\\Program Files\\Common Files'只能匹配Common前面的一个反斜杠;但path目录中多反斜杠,对于windows目录的识别是不影响的,os.listdir(path)仍然会正确的识别目录,不会因为多了一个反斜杠找不到目录,如'C:\Program Files\\Common Files\DESIGNER'。
不过这种巧妙的方式易读性差一些,我查了好几天才弄明白,比较正常的做法是把目录识别放到迭代函数外面,处理后再传参进迭代的函数。
Python正则匹配递归获得给出目录下的特定类型的文件小技巧的更多相关文章
- Python批量删除指定目录下的指定类型的文件
Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...
- C++查找指定目录下所以指定类型的文件
/*************************************************************** 函数名称:FindFile 查找指定目录下指定文件 输入:fileNa ...
- Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置
区别: 1.两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效,同样是永久变量,是全局变量. 2./etc/prof ...
- Python正则匹配字母大小写不敏感在读xml中的应用
需要解决的问题:要匹配字符串,字符串中字母的大小写不确定,如何匹配? 问题出现之前是使用字符串比较的方式,比如要匹配'abc',则用语句: if s == 'abc':#s为需要匹配的字符串 prin ...
- python 提取目录中特定类型的文件
python使用‘os’和‘re’模块提取目录中特定类型的文件,这两个模都是安装python自带的,所以不需要安装. 思路: 使用os库lilstdir获取文件夹中的所有文件名,然后带上文件夹路径组合 ...
- java 20 -3 递归之删除特定目录下的特定文件
/* 需求:删除H:\demo目录下的带内容的文件 分析: A:封装该目录 B:获取该目录下所有的文件或文件夹的File数组 C:遍历该File数组,获取每一个File对象 D:判断所遍历的FIle对 ...
- Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例
1. 需求:输出指定目录下的所以.java结尾文件的绝对路径的案例: 分析: A:封装目录 B:获取该目录下的所有文件和文件夹的File数组 C:遍历这个File数组,得到每一个File对象的 ...
- 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件
原 解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件 原文章链接:https://blog.csdn.net/beauxie/article/de ...
- Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
1. 复制指定目录下指定后缀名的文件并修改名称的案例 需求:复制指定目录下的指定文件,并修改后缀名. • 指定的文件是:.java文件. • 指定的后缀名是:.jad • 指 ...
随机推荐
- Linux学习——粘粘今天看的东西
由二分割表就叧有64 bytes而已,最多叧能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)戒延伸(Extended)分割槽.分割槽的最小单位为磁柱(cylinder)请注意, 延 ...
- 怎样卸载goldengate
1. Log on to the database server (as oracle) where the GoldenGate software isinstalled.2. Change dir ...
- ural 1084 Goat in the Garden
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> u ...
- 用PYTHON练练一些算法
网上一个专门用来给新手练算法的: http://projecteuler.net/problem=1 Multiples of 3 and 5 Problem 1 Published on Frida ...
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...
- java--对象比较器
在实际的项目中,经常会遇到排序问题,对于基本数据类型java支持Arrays.sort()和Collection.sort()对集合进行排序,但是对用户自定义类型排序呢?java给我们提供了两种解决方 ...
- MYSQL视图的学习笔记
MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具 1. 视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...
- (转)实战p12文件转pem文件
需要实现这个功能的一般都是app开发证书不支持通配符(即com.xxx.xxx.xxx格式),在业务需求上类似消息推送这样的业务. 1.首先生成一个ssl的证书 选择app IDS 后实现下面这个(这 ...
- Object-C 类定义 -- 笔记
OC类分为两个文件,一个是.h文件,一个是.m文件 .h文件 存放类,函数的申明 .文件 存放类的具体实现 类申明使用关键字 @interface @end来申明 类实现使用关键字@implement ...
- 【微信公众号】验证用户OpenID是否关注某个公众号
1.获取OpenID #region 获取微信支付的OpenId /// <summary> /// 获取微信支付的OpenId /// </summary> /// < ...