问题描述提取多个嵌套文件夹下面同名文件

目录

代码 a

代码A

代码B

代码C


在这个文件夹下有三个文件夹

每一个文件夹下又有多个文件夹,要找的图片在这个文件夹里

代码 a


import shutil
from os.path import join
from os import listdir
# 打开文件
path = "E:\图片\Images\mao"dirs = listdir(path)
new_dirs = "E:\图片\OCRS"count = 0for files in dirs:if files == ".DS_Store":continuefile_path = join(path, files)for files_second in listdir(file_path):if files_second == ".DS_Store":continue# file_path_second = join(path + files, files_second)file_path_second = join(path, files)file_path_second = join(file_path_second, files_second)for file in listdir(file_path_second):if file.startswith("ocr"):count += 1new_name = str(count) + ".jpg"shutil.copy(file_path_second + '/' + file, new_dirs + new_name)# 如何放到指定的文件夹呢??

如果所有图在一个文件夹下面则

import shutil
from os.path import join
from os import listdirpath = ""E:\图片\Images\mao""
dirs = listdir(path)
new_dirs = "E:\图片\OCRS"
for files in dirs:if files == ".DS_Store":continuefile_path = join(path, files)for file in listdir(file_path):if file.startswith("1v"):new_name = files + ".jpg"shutil.copy(file_path + '/' + file, new_dirs + new_name)

以上代码问题

1 路径前加r,避免特殊字符转义

2 新图片不能放到指定的文件夹

修改如下

代码A

import shutil
from os.path import join
from os import listdir# 打开文件
path = r"E:\SourceOCR"
dirs = listdir(path)
new_dirs = r"E:\OCR"count = 0for files in dirs:if files == ".DS_Store":continuefile_path = join(path, files)for files_second in listdir(file_path):if files_second == ".DS_Store":continue# file_path_second = join(path + files, files_second)file_path_second = join(path, files)files_path = join(file_path_second, files_second)for file in listdir(files_path):if file.startswith("ocr"):count += 1new_name = str(count) + ".jpg"det_dir = join(new_dirs, new_name)source_file_dir = files_path + '/' + fileshutil.copy(source_file_dir, det_dir)# shutil.copyfile(source_file_dir, det_dir)

代码B

import os
import shutil
# 将文件夹中所有的文件名存入一个list
from os.path import joindef find_copy_files(files):for file in files:if file == "ocr.jpg":global countcount += 1source = secDir + '\\' + str(file)newFileName = "ocr" + str(count) + ".jpg"det = join(determination, newFileName)shutil.copyfile(source, det)#目标文件夹,此处为相对路径,也可以改为绝对路径
determination = r'E:\OCR'
if not os.path.exists(determination):os.makedirs(determination)#源文件夹路径
path = r'E:\SourceOCR'
folders= os.listdir(path)
count = 0for folder in folders:dir = path + '\\' +  str(folder)folder_second = os.listdir(dir)for secfolder in folder_second:secDir = dir + '\\' + str(secfolder)files = os.listdir(secDir)find_copy_files(files)# for file in files:#     if file == "ocr.jpg":#         count += 1#         source = secDir + '\\' + str(file)#         # deter = determination + str(file)#         newFileName = "ocr" + str(count) +".jpg"#         det = join(determination, newFileName)#         shutil.copyfile(source, det)

假如文件目录为a/b,c,d

图片在bcd文件夹中可以实现

但如果b文件夹里面有b1, b2, b3文件夹则其不能提取

对其修改后可以直接提取所有文件并重新命名,不用考虑文件夹里嵌套了多少

代码C

import os
import shutil
from os.path import joinfile_dir = r'E:\SourceOCR'
determination = r'E:\OCR'
count = 0for roots, dirs, files in os.walk(file_dir):  # 注意这里一定要加 roots,否则报错for dir_name in files:# 返回所有路径dir = os.path.join(roots, dir_name)# 分割路径,返回路径名和文件扩展名的元组# https://www.runoob.com/python/python-os-path.htmldir_fileName = os.path.splitext(dir)# print(dir_fileName[0])# print(dir_fileName)# 找到需要的文件名aim = dir_fileName[0].split("\\")[-1]# print(dir)if aim == "ocr":count += 1NewFileName = str(count) + ".jpg"det = join(determination, str(count) + ".jpg")# det = join(determination, NewFileName)shutil.copyfile(dir, det)

还可以提升用try catch考虑如果文件夹为空或不存在要找的文件名时会出错,以后有空再修改。

用Python将一个文件夹下多个子文件夹中相同文件拷贝到同一个文件夹中并重新命名相关推荐

  1. linux中.la是什么文件,linux下的so、o、lo、a、la文件有什么区别?

    linux下的so.o.lo.a.la文件有什么区别? o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实 ...

  2. 总文件夹下含有多个sdf,批量转换为SMILES并保存到csv中

    本代码适用于这种结构的文件,主要还是SDMolSupplier的参数要转化为str类型,并且只能一个一个的转化. import sys import torch import os from rdki ...

  3. Python复制文件夹下的excel文件的指定列

    主要实现功能: 批量操作一个文件夹下的Excel文件 对该文件夹下的Excel同等操作 复制特定列到新建Excel文件 完成单元格获取文件名的操作 python操作excel详细 # -*- code ...

  4. Linux将一个文件夹或文件夹下的所有内容复制或移动到另一个文件夹

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

  5. linux整个目录复制移动,Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹,个人常用收录...

    1.将一个文件夹下的所有内容复制到另一个文件夹下 cp -r /home/packageA/* /home/cp/packageB/ 或 cp -r /home/packageA/. /home/cp ...

  6. 编辑重命名文件夹下多个文件名,一键操作技巧

    修改一个文件名很简单,如果是一个文件夹下的大量文件名,还会觉得简单吗?对说会批量重命名文件的来说也是如此的简单,那么要如何能批量重命名文件.文件夹呢?下面以批量文件为例,分享给大家一键操作的技巧. 准 ...

  7. java读取文件夹下的所有txt文件,java读取文件夹下文件及txt内容

    public class PositionController { // 读取txt内容 public static String txt2String(File file) { StringBuil ...

  8. Linux统计某文件夹下文件、文件夹的个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  9. Linux下查看文件夹下文件个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  10. android 7 创建文件夹,Android 在 res/layout 文件夹 下创建一个 子文件夹实例

    Android 资源文件夹 Layout 文件夹 Layout 文件是存放Android的布局文件的资源文件夹,但是如果你想要在里面创建子文件夹,你会发现xml文件报错. 如何在Layout文件夹下方 ...

最新文章

  1. Spring Boot 中的 @EnableAutoConfiguration 是如何处理的?
  2. div固定大小文字溢出自动缩小_CSS样式更改——框模型、定位、浮动、溢出
  3. Basic Sorting Algorithms
  4. JZOJ 3819. 【NOI2015模拟9.9】取石子
  5. 修改win7编码为utf-8
  6. mybatis 配置 mysql连接池_spring 5.x 系列第5篇 —— 整合 mybatis + druid 连接池 (xml配置方式)...
  7. x64 结构体系下的内存寻址
  8. jq常用过滤器_JQuery的常用选择器、过滤器、方法全面介绍
  9. 10以内逆向运算题_加减法启蒙系列 | 实战篇二(10以内减法)
  10. 关于LINUX的NVIDIA显卡驱动安装
  11. 监控oracle某条sql语句,Oracle-常用监控SQL语句
  12. c51单片机汉字查表c语言,AT89C51单片机驱动液晶显示汉字C语言
  13. openwrt1907 mt7621配置DDR自适应
  14. LynxFly科研小四轴横空出世,开源,F4,WIFI
  15. 第115页的gtk+编程例子——最简单的进度条2附带使用Anjuta写gtk程序的步骤
  16. 项目管理知识体系指南 (四)
  17. 虚拟桌面基础架构 (VDI)及其工作原理
  18. 第二届“长安杯”电子数据竞赛试题wp
  19. h5中返回上一页常见的问题
  20. PyTorch单机多卡训练(DDP-DistributedDataParallel的使用)备忘记录

热门文章

  1. 自从我不管事后,员工们肯定舒心多了
  2. python快速排序算法没看懂_python中的快速排序算法的理解
  3. springboot项目搭建(mybatis + thymeleaf)
  4. java 程序出现标点错误,我是学java的新手,下面代码出现报错,请问是什么原因?如何解决?...
  5. 遗传算法 python_Python实现入门级遗传算法
  6. 如何理解java抽象类,我是如何理解Java抽象类和接口的
  7. imagick php手册,windows7下安装php的imagick和imagemagick扩展教程
  8. 设置mysql的schema_MySQL Performance-Schema(一) 配置篇
  9. MySQL 8.0.11 中使用 grant ... identified by 时 error 1064 near 'identified by '密码'' at line 1...
  10. 深入理解 Android 消息机制原理