Python檔名匹配與檔案複製的實現
阿新 • • 發佈:2020-12-14
檔名的匹配,實際上就是相當於獲取檔名(不含字尾),然後利用獲取到的檔名到另外一個資料夾中去尋找對應的檔案,然後將檔案取出,放置到指定資料夾下.概括的來說,分三個步驟:一是取出遍歷目錄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:\jb51\index.html'))
返回結果:
('index','.html')
實際程式碼如下
#coding=utf-8 import os import os.path def GetFileNameAndExt(filename): (filepath,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基礎
'%d.txt'%fname
這樣基本上可以表示比如120.txt這樣的字串了。
程式碼如下:
##2.將取出來的檔名文字與特定字尾拼接,得到B目錄下的檔案 tempxmlname='%s.xml'%shotname xmlname=os.path.join(label_dir,tempxmlname) print xmlname
我們來看看輸出:
大功告成,現在我們得到了想要的資料格式,開始到這個指定的路徑去尋找檔案匹配檔名了~~~~
step3:定位到目標檔名,將其複製到指定目錄下,保持檔名不變.(Python檔案複製)
##3.根據得到的xml檔名,將對應檔案拷貝到指定目錄C
shutil.copy(xmlname,annotion_dir)
這樣,與圖片相關的標註檔案就全部拷貝過來了~~~
最後,我們來看看我們最終的程式碼:
#coding=utf-8 import os import os.path import shutil #Python檔案複製相應模組 def GetFileNameAndExt(filename): (filepath,extension print '~~~~' ##2.將取出來的檔名文字與特定字尾拼接,再與路徑B拼接,tempxmlname) print xmlname ##3.根據得到的xml檔名,將對應檔案拷貝到指定目錄C shutil.copy(xmlname,annotion_dir)
至此,大功告成!
以上這篇Python檔名匹配與檔案複製的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。