<p>只需替换srcDir和dstDir,您将获得文件.jpg如果使用MoveFile(srcDir,dstDir,resuive=True),则将文件.jpg也在srcDir的子目录中。在</p>
<pre><code>from __future__ import print_function
import os, re, shutil
class MoveFile(object):
def __init__(self, srcDir, dstDir, recursive=False, flag='.JPG'):
self.srcDir = srcDir
self.dstDir = dstDir
self.recursive = recursive
self.flag = flag
self.duplicateFileName = []
self.badFileName = []
self.jpgFile = []
self.srcDirDict = {}
def findAllJPG(self):
# recursively find file
if self.recursive == False:
for item in os.listdir(self.srcDir):
if os.path.isfile(os.path.join(self.srcDir,item)) and \
os.path.splitext(item)[-1] == self.flag.lower():
self.jpgFile.append(item)
else:
for root, dirs, files in os.walk(self.srcDir):
for item in files:
if os.path.splitext(item)[-1] == self.flag.lower():
self.jpgFile.append(item)
self.srcDirDict[item] = root
if not self.jpgFile:
print('NOT FIND ANY JPG FILE!')
return self.jpgFile
def parse(self, text):
try:
pat =re.compile('[a-zA-Z]+([\d]+)')
match = pat.match(text)
data = match.group(1)
fileName = data[:4]+'-'+data[4:6]
except TypeError:
self.badFileName.append(text)
fileName = None
return fileName
def move(self, text):
try:
fileName = self.parse(text)
if fileName == None: return
if not os.path.isdir(os.path.join(self.dstDir, fileName)):
os.mkdir(os.path.join(self.dstDir,fileName))
srcPath= os.path.join(self.srcDirDict[text], text)
dstDir = os.path.join(self.dstDir, fileName)
shutil.move(srcPath, dstDir)
except:
self.duplicateFileName.append(text)
raise
@staticmethod
def decC(dir):
return os.path.join(self.srcDir,dir)
def run(self):
try:
if not os.path.isdir(self.dstDir):
os.mkdir(self.dstDir)
for text in self.findAllJPG():
self.move(text)
print('MOVE SUCCESSFUL!')
except:
raise
srcDir = r'C:\Users\Administrator\Desktop\2'
dstDir = r'C:\Users\Administrator\Desktop\3'
fmv = MoveFile(srcDir, dstDir, recursive = False)
fmv.run()
</code></pre>