Python批量复制图片到指定文件夹的两种实现方法
本文介绍了使用Python批量复制图片的两种实用方案。第一种通过读取文本文件中的文件名列表,利用shutil模块将指定图片复制并重命名到目标目录;第二种通过递归遍历源文件夹,保持原有目录结构并处理文件覆盖逻辑,同时提供了批量删除特定格式文件的示例。代码简洁,适合数据处理场景。
本文分享使用Python将图片批量复制到目标文件夹的具体实现代码,供读者参考学习。
以下是第一种实现方式的完整代码示例:
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 02 21:03:44 2018
@author: Fsl
"""
import shutil
#这个库复制文件比较省事
def objFileName():
'''
生成文件名列表
:return:
'''
local_file_name_list = r'G:\KeTi\OCT\ImageSets\Main\test.txt'
#指定名单
obj_name_list = []
for i in open(local_file_name_list,'r'):
obj_name_list.append(i.replace('\n',''))
return obj_name_list
def copy_img():
'''
复制、重命名、粘贴文件
:return:
'''
local_img_name=r'G:\KeTi\OCT\JPEGImages'
#指定要复制的图片路径
path = r'G:\KeTi\OCT\data'
#指定存放图片的目录
for i in objFileName():
new_obj_name = i+'.jpg'
shutil.copy(local_img_name+'/'+new_obj_name,path+'/'+new_obj_name)
if __name__ == '__main__':
copy_img()
代码逻辑较为简单,主要依赖标准库完成操作。
此外,小编还补充了另一种基于递归目录处理的Python图片批量复制及删除示例,代码如下:
#coding=utf-8
import os
import shutil
#递归复制文件夹内的文件
def copyFiles(sourceDir,targetDir):
#忽略某些特定的子文件夹
if sourceDir.find("exceptionfolder")>0:
return
#列出源目录文件和文件夹
for file in os.listdir(sourceDir):
#拼接完整路径
sourceFile = os.path.join(sourceDir,file)
targetFile = os.path.join(targetDir,file)
#如果是文件则处理
if os.path.isfile(sourceFile):
#如果目的路径不存在该文件就创建空文件,并保持目录层级结构
if not os.path.exists(targetDir):
os.makedirs(targetDir)
#如果目的路径里面不存在某个文件或者存在那个同名文件但是文件有残缺,则复制,否则跳过
if not os.path.exists(targetFile) or (os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
open(targetFile, "wb").write(open(sourceFile, "rb").read())
print targetFile+" copy succeeded"
#如果是文件夹则递归
if os.path.isdir(sourceFile):
copyFiles(sourceFile, targetFile)
#遍历某个目录及其子目录下所有文件拷贝到某个目录中
def copyFiles2(srcPath,dstPath):
if not os.path.exists(srcPath):
print "src path not exist!"
if not os.path.exists(dstPath):
os.makedirs(dstPath)
#递归遍历文件夹下的文件,用os.walk函数返回一个三元组
for root,dirs,files in os.walk(srcPath):
for eachfile in files:
shutil.copy(os.path.join(root,eachfile),dstPath)
print eachfile+" copy succeeded"
#删除某目录下特定文件
def removeFileInDir(sourceDir):
for file in os.listdir(sourceDir):
file=os.path.join(sourceDir,file) #必须拼接完整文件名
if os.path.isfile(file) and file.find(".jpg")>0:
os.remove(file)
print file+" remove succeeded"
if __name__ =="__main__":
copyFiles("./dir1","./dir2")
#removeFileInDir("./dir2")
#copyFiles2("./dir1","./dir2")
以上就是本文介绍的全部内容,希望这些代码能对读者的Python学习有所帮助,欢迎大家继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













