Pythonファイル名マッチングとファイルコピーの実現


ファイル名のマッチングは、実際にはファイル名を取得し(拡張子を含まない)、そして取得したファイル名を別のフォルダに利用して対応ファイルを探し、ファイルを取り出して指定フォルダの下に置くことに相当します。要約すると、フォルダAを取り出し、ファイル名を取得するステップが三つあります。第二に、このファイル名を使用して、指定されたパスBと接続し、拡張子を追加して、ターゲットファイル名を生成する。三は、スティッチングによって生成されたターゲットファイル名を指定ディレクトリCにコピーします。
じゃ、コードを書きましょう。
Step 1:指定されたディレクトリAの下のすべてのファイル名を取得します。ファイルの拡張子は含まれません。主に以下の考えに基づいています。

def GetFileNameAndExt(filename):
 import os
 (filepath,tempfilename) = os.path.split(filename);
 (shotname,extension) = os.path.splitext(tempfilename);
 return shotname,extension
テストコード
print(GetFile Name AndExt('c:\jb 51\index')
結果を返します('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 '~~~~'
Step 2:2は、このファイル名を利用して、指定されたパス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
出力を見に来ました。

成功しました。今は欲しいデータフォーマットを得ました。この指定されたパスでファイルのファイル名を探しに行きました。
Step 3:ターゲットファイル名に位置し、指定されたディレクトリにコピーします。ファイル名はそのまま維持します。(Pythonファイルコピー)
得られたxmlファイル名に基づき、対応ファイルを指定ディレクトリCにコピーする。
shutil.co py(xmlname,annotion_dir)
これで、写真に関する表示ファイルを全部コピーしました。

最後に、最終コードを見てみましょう。

#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ファイル名のマッチングとファイルのコピーの実現は、小編集が皆さんに提供したすべての内容です。参考にしていただければ幸いです。よろしくお願いします。