一、将一个文件夹的文件 复制或移动 到另一个文件夹
import os
import shutil
# 文件输入路径
img_path="G:/helmet/jpg"
# 文件保存路径
img_save="G:/11.17_ear_all - havehat/jpg"
# 读取路径
ls=os.listdir(img_path)
# 编号
num= 0
# 遍历文件
for items in ls:
# 打印文件名称
print(items)
# 复制
# 输入路径 名称 保存路径 0001 编号 文件后缀
shutil.copy(img_path+"\\"+items,img_save+"\\"+"%.04d"%(num)+".jpg")
# 移动
# 输入路径 名称 保存路径 01 编号 文件后缀
# shutil.copy(img_path+"\\"+items,img_save+"\\"+"%.02d"%(num)+".jpg")
# 循环
num+=1
# 打印总数
#print(num)
二、对比两个文件夹的名称,一样的移动至新的文件夹
import os
import shutil
# 两个文件夹输入的路径
im_path=r"G:\sign\img"
xm_path=r"G:\sign\xml"
# 移动至新的保存文件夹路径
# 若对比的文件内容一样,保存路径可以设置成一个
im_save=r"G:\sign\imgs"
xm_save=r"G:\sign\xmls"
# 遍历输入文件夹路径
ls=os.listdir(im_path)
ss=os.listdir(xm_path)
k=1
# 循环
for item in ls:
#print(item)
for items in ss:
if item.split(".")[0]==items.split(".")[0]: # 对比内容
# 移动 对比的内容一样,只需一行代码
shutil.move(im_path+"\\"+item,im_save+"\\"+item)
shutil.move(xm_path + "\\" + items, xm_save + "\\" + items)
# 打印名称和个数
print(item,k)
k+=1
四、批量修改一个文件夹里面的文件后缀
'''
修改后缀
'''
import os
dirName = r"your_path" + '/' # 图片所在路径
total_img = os.listdir(dirName)
for filename in total_img: # 索引所有图像
newname = filename
newname = newname.split(".") # 分离后缀
if newname[-1] == "jpg": # 假定原后缀为.png格式
newname[-1] = "xml" # 目标后缀为.jpg格式
newname = str.join(".", newname) # '.'与后缀名称相连接
filename = dirName + filename # 原始图片路径+名称
newname = dirName + newname # 新的图像路径+名称
os.rename(filename, newname) # 重命名
print(newname, "图片格式修改成功")
五、
一个大的文件夹,里面有很多子文件夹。在这个大的文件夹里面把是xxx后缀的文件复制到另外一个文件夹里面
import os
import shutil
# 定义大文件夹路径和目标文件夹路径
source_folder = r"xxxxx" # 大的文件夹路径
destination_folder = r"xxxx" # 目标文件夹路径
# 遍历大文件夹及其子文件夹中的所有文件
for root, dirs, files in os.walk(source_folder):
for filename in files:
file_path = os.path.join(root, filename)
# 筛选出符合条件的文件(以.jpg结尾)
if file_path.endswith(".xxx"):
destination_path = os.path.join(destination_folder, filename)
shutil.copyfile(file_path, destination_path)
六、
有一个大的文件夹,里面有很多子文件夹,现在调用一个裁剪函数,将大文件夹里面的所有图片进行裁剪,并生成一个与图片文件夹名称一样的副本文件夹,将裁剪好的图片保存到对应的副本文件夹里
def function5():
import os
import cv2
# 裁剪函数----可换成自己其他的裁剪函数
def img_cut(img):
h, w, c = img.shape
# 定义裁剪的区域坐标
x_1_1 = int(w * 0.1)
y_1_1 = int(h * 0.15)
x_1_2 = int(w * 0.77)
y_1_2 = int(h * 0.33)
x_2_1 = int(w * 0.09)
y_2_1 = int(h * 0.51)
x_2_2 = int(w * 0.79)
y_2_2 = int(h * 0.7)
# 进行裁剪
cut_1 = img[y_1_1:y_1_2, x_1_1:x_1_2, :]
cut_2 = img[y_2_1:y_2_2, x_2_1:x_2_2, :]
return cut_1, cut_2
# 定义大文件夹路径和目标文件夹路径
source_folder = r"H:\MVS\MVS\MVS\clip" # 大的文件夹路径
# 遍历大文件夹及其子文件夹中的所有图片文件
for root, dirs, files in os.walk(source_folder):
for filename in files:
file_path = os.path.join(root, filename)
# 读取图片
img = cv2.imread(file_path)
# 进行裁剪操作
cut_1, cut_2 = img_cut(img)
# 创建副本文件夹,名称与原文件夹一致
folder_name = os.path.basename(source_folder)
destination_folder = os.path.join(root, folder_name + "_cut")
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
# 保存裁剪后的图片到对应的副本文件夹
cv2.imwrite(os.path.join(destination_folder, f"cut_1_{filename}"), cut_1)
cv2.imwrite(os.path.join(destination_folder, f"cut_2_{filename}"), cut_2)