这篇文章给大家介绍利用Python怎么对文件名进行匹配,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
文件名的匹配,实际上就是相当于获取文件名(不含后缀),然后利用获取到的文件名到另外一个文件夹中去寻找对应的文件,然后将文件取出,放置到指定文件夹下。概括的来说,分三个步骤:一是取出遍历目录,得到各个文件文件名;二是利用该文件名,与指定路径B拼接,并加上后缀,产生目标文件名;三是根据拼接产生的目标文件名,将相应文件复制到指定目录c .
步骤1:获取指定目录一个下面的所有文件名。不包含文件后缀。主要基于以下思想:
def GetFileNameAndExt(文件名): import 操作系统 ,(filepath tempfilename)=, os.path.split(文件名); ,(shotname,扩展)=,os.path.splitext (tempfilename); ,return shotname扩展
测试代码
打印(GetFileNameAndExt (& # 39; c: \ jb51 \ index . html # 39;))
引用>返回结果:
<代码>(& # 39;指数# 39;& # 39;. html # 39;) 代码>
实际代码如下
#=utf - 8编码 import 操作系统 import os.path def GetFileNameAndExt(文件名): ,(filepath tempfilename)=, os.path.split(文件名); ,(shotname,扩展)=,os.path.splitext (tempfilename); return shotname、扩展 , source_dir=& # 39;/home/xmlReader nvidia//圆# 39; label_dir=& # 39;/home/xmlReader nvidia//标签# 39; annotion_dir=& # 39;/home/xmlReader nvidia//annocation& # 39; , # # 1。将指定一个目录下的文件名取出,并将文件名文本和文件后缀拆分出来 img=os.listdir (source_dir), #得到文件夹下所有文件名称 s=[] for fileNum  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,才能扩展),=,os.path.splitext (tempimgname);, #将文件名文本与文件后缀分开 print shotname、扩展 ,print & # 39; ~ ~ ~ ~ & # 39;步骤2:二是利用该文件名,与指定路径B拼接,并加上后缀,产生目标文件名
# # 2。将取出来的文件名文本与特定后缀拼接,在于路径拼接,得到B目录下的文件 ,xmlname=os.path.join (label_dir、shotname & # 39; xml # 39;) 以前,print xmlname >但是得到的输出是有分隔符的。
如何去掉分隔符呢?或者说如何拼接文件名文本和后缀呢?基于以下Python基础
<代码> & # 39;% d.txt& # 39; %帧代码>
这样基本上可以表示比如120。txt这样的字符串了。
代码如下:
# # 2。将取出来的文件名文本与特定后缀拼接,在于路径拼接,得到B目录下的文件, ,tempxmlname=& # 39; % s.xml& # 39; % shotname ,xmlname=os.path.join (label_dir tempxmlname) 以前,print xmlname >我们来看看输出:
大功告成,现在我们得到了想要的数据格式,开始到这个指定的路径去寻找文件匹配文件名了~ ~ ~ ~
步骤3:定位到目标文件名,将其复制到指定目录下,保持文件名不变。(Python文件复制)
# # 3。根据得到的xml文件名,将对应文件拷贝到指定目录C
shutil.copy (xmlname annotion_dir)
引用>这样,与图片相关的标注文件就全部拷贝过来了~ ~ ~
最后,我们来看看我们最终的代码:
#=utf - 8编码 import 操作系统 import os.path import shutil # Python文件复制相应模块 , def GetFileNameAndExt(文件名): ,(filepath tempfilename)=, os.path.split(文件名); ,(shotname,扩展)=,os.path.splitext (tempfilename); return shotname、扩展 , source_dir=& # 39;/home/xmlReader nvidia//圆# 39; label_dir=& # 39;/home/xmlReader nvidia//标签# 39; annotion_dir=& # 39;/home/xmlReader nvidia//annocation& # 39; , # # 1。将指定一个目录下的文件名取出,并将文件名文本和文件后缀拆分出来 img=os.listdir (source_dir), #得到文件夹下所有文件名称 s=[] for fileNum  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,才能扩展),=,os.path.splitext (tempimgname);, #将文件名文本与文件后缀分开 print shotname、扩展 ,print & # 39; ~ ~ ~ ~ & # 39; # # 2。将取出来的文件名文本与特定后缀拼接,再与路径B拼接,得到B目录下的文件, ,tempxmlname=& # 39; % s.xml& # 39; % shotname ,xmlname=os.path.join (label_dir tempxmlname) print xmlname # # 3。根据得到的xml文件名,将对应文件拷贝到指定目录C ,shutil.copy (xmlname annotion_dir)利用Python怎么对文件名进行匹配