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格式化字符串实例总结
Sep 28 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
详解python之协程gevent模块
Jun 14 Python
python文件写入write()的操作
May 14 Python
Django实现跨域的2种方法
Jul 31 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
pycharm通过anaconda安装pyqt5的教程
Mar 24 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
Django通过json格式收集主机信息
May 29 Python
Django跨域请求原理及实现代码
Nov 14 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 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
php 删除数组元素
2009/01/16 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
phpStorm2020 注册码
2020/09/17 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python实现批量下载图片的方法
2015/07/08 Python
python异常和文件处理机制详解
2016/07/19 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
实习单位鉴定评语
2014/04/26 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书