Python文件名匹配与文件复制的实现


Posted in Python onDecember 11, 2020

文件名的匹配,实际上就是相当于获取文件名(不含后缀),然后利用获取到的文件名到另外一个文件夹中去寻找对应的文件,然后将文件取出,放置到指定文件夹下.概括的来说,分三个步骤:一是取出遍历目录A,得到各个文件文件名;二是利用该文件名,与指定路径B拼接,并加上后缀,产生目标文件名;三是根据拼接产生的目标文件名,将相应文件复制到指定目录C.

好,那么我们开始写代码吧~~~

step1:获取指定目录A下面的所有文件名.不包含文件后缀.主要基于以下思想:

def GetFileNameAndExt(filename):
 import os
 (filepath,tempfilename) = os.path.split(filename);
 (shotname,extension) = os.path.splitext(tempfilename);
 return shotname,extension

测试代码

print(GetFileNameAndExt('c:\3water\index.html'))

返回结果:

('index', '.html')

实际代码如下

#coding=utf-8
import os
import os.path
def GetFileNameAndExt(filename):
 (filepath,tempfilename) = os.path.split(filename);
 (shotname,extension) = os.path.splitext(tempfilename);
 return shotname,extension
 
source_dir='/home/nvidia/xmlReader/circle'
label_dir='/home/nvidia/xmlReader/label'
annotion_dir='/home/nvidia/xmlReader/annocation'
 
##1.将指定A目录下的文件名取出,并将文件名文本和文件后缀拆分出来
img=os.listdir(source_dir) #得到文件夹下所有文件名称
s=[]
for fileNum in img: #遍历文件夹
 if not os.path.isdir(fileNum): #判断是否是文件夹,不是文件夹才打开
  print fileNum #打印出文件名
  imgname= os.path.join(source_dir,fileNum)
  print imgname #打印出文件路径
  (imgpath,tempimgname) = os.path.split(imgname); #将路径与文件名分开
  (shotname,extension) = os.path.splitext(tempimgname); #将文件名文本与文件后缀分开
 print shotname,extension
 print '~~~~'

step2:二是利用该文件名,与指定路径B拼接,并加上后缀,产生目标文件名

##2.将取出来的文件名文本与特定后缀拼接,在于路径拼接,得到B目录下的文件
 xmlname=os.path.join(label_dir,shotname,'.xml')
 print xmlname

但是得到的输出是有分隔符的.

Python文件名匹配与文件复制的实现

如何去掉分隔符呢?或者说如何拼接文件名文本和后缀呢? 基于以下Python基础

'%d.txt'%fname

这样基本上可以表示比如120.txt这样的字符串了。

代码如下:

##2.将取出来的文件名文本与特定后缀拼接,在于路径拼接,得到B目录下的文件 
 tempxmlname='%s.xml'%shotname 
 xmlname=os.path.join(label_dir,tempxmlname)
 print xmlname

我们来看看输出:

Python文件名匹配与文件复制的实现

大功告成,现在我们得到了想要的数据格式,开始到这个指定的路径去寻找文件匹配文件名了~~~~

step3:定位到目标文件名,将其复制到指定目录下,保持文件名不变.(Python文件复制)

##3.根据得到的xml文件名,将对应文件拷贝到指定目录C

shutil.copy(xmlname,annotion_dir)

这样,与图片相关的标注文件就全部拷贝过来了~~~

Python文件名匹配与文件复制的实现

最后,我们来看看我们最终的代码:

#coding=utf-8
import os
import os.path
import shutil #Python文件复制相应模块
 
def GetFileNameAndExt(filename):
 (filepath,tempfilename) = os.path.split(filename);
 (shotname,extension) = os.path.splitext(tempfilename);
 return shotname,extension
 
source_dir='/home/nvidia/xmlReader/circle'
label_dir='/home/nvidia/xmlReader/label'
annotion_dir='/home/nvidia/xmlReader/annocation'
 
##1.将指定A目录下的文件名取出,并将文件名文本和文件后缀拆分出来
img=os.listdir(source_dir) #得到文件夹下所有文件名称
s=[]
for fileNum in img: #遍历文件夹
 if not os.path.isdir(fileNum): #判断是否是文件夹,不是文件夹才打开
  print fileNum #打印出文件名
  imgname= os.path.join(source_dir,fileNum)
  print imgname #打印出文件路径
  (imgpath,tempimgname) = os.path.split(imgname); #将路径与文件名分开
  (shotname,extension) = os.path.splitext(tempimgname); #将文件名文本与文件后缀分开
 print shotname,extension
 print '~~~~'
##2.将取出来的文件名文本与特定后缀拼接,再与路径B拼接,得到B目录下的文件 
 tempxmlname='%s.xml'%shotname 
 xmlname=os.path.join(label_dir,tempxmlname)
 print xmlname
##3.根据得到的xml文件名,将对应文件拷贝到指定目录C
 shutil.copy(xmlname,annotion_dir)

至此,大功告成!

Python文件名匹配与文件复制的实现

以上这篇Python文件名匹配与文件复制的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python在Windows8下获取本机ip地址的方法
Mar 14 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
Python格式化输出%s和%d
May 07 Python
django反向解析URL和URL命名空间的方法
Jun 05 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
Python变量访问权限控制详解
Jun 29 Python
简单了解django orm中介模型
Jul 30 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python的形参和实参使用方式
Dec 24 Python
Python的Tqdm模块实现进度条配置
Feb 24 Python
Python: glob匹配文件的操作
Dec 11 #Python
Python Socket多线程并发原理及实现
Dec 11 #Python
python 实现Harris角点检测算法
Dec 11 #Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 #Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 #Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 #Python
Python 用__new__方法实现单例的操作
Dec 11 #Python
You might like
Smarty+QUICKFORM小小演示
2007/02/25 PHP
PHP URL路由类实例
2013/11/12 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
python开发入门——列表生成式
2020/09/03 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
C/C++程序员常见面试题二
2015/11/19 面试题
护理自我鉴定范文
2013/10/06 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
董事长秘书岗位职责
2013/11/29 职场文书
环保建议书500字
2014/05/14 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
追悼会答谢词范文
2015/09/29 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技