YOLO3 + Python3.6 深度学习篇(附)- 文件的重组 - 移动 - 复制

news/2024/5/19 23:21:25

从搜集数据的角度来看,越多的数据理论上说会有越高的准确率,但是每次爬虫找下来的图片只能够有百来张,如果分了很多不同的文件夹之后,为了迅速的将它们集合成完整的 “单一个” 资料夹,下面代码可以把多个文件夹里面的文件汇总到一个指定的文件夹中,不过还是有些前提条件需要遵守。

使用时的刚性规则:

  • 指定的文件夹必须提前准备好,并且是跟要被汇总的文件夹不同的文件夹,要是希望即便是一个不存在的资料夹路径,也可以自动创出来的模式,可以自己用 os.mkdir() 函数修改。


运用到的模块包有:

  • os: https://docs.python.org/3/library/os.html
  • shutil: https://docs.python.org/3/library/shutil.html

The codes are written below in practice:

import os
import shutil

# 首先定义一共有多少个文件夹需要被重新整合,并把这些路径放到下面这个空的 list 里面
folder_num = int(input('How many folders to combine: '))
folder_path_list = []

# 贴入文件夹路径的时候,需要先确定这个文件夹是否存在,如果不存在,那就要不断重新输入到对为止
for i in range(folder_num):
    folder_path = str(input('The folder path: '))
    while not os.path.exists(folder_path):
        print('This is not a correct path.')
        folder_path = str(input('The exact folder path: '))
    else:
        folder_path_list.append(folder_path)

# 设定好一个已经存在的文件夹路径作为文件储存位置,如果文件夹不存在或是文件夹属于待合并的文件夹,则重新定义
save_path = input('The directory to hold the combined files: ')
while not os.path.exists(save_path) or save_path in folder_path_list:
    print('This directory is not allowed. Change another one.')
    save_path = input('The directory to hold the combined files: ')

# 创造一个计数器,初始数字就是用来汇总的资料夹里面文件数量大小
file_num = int(len(os.listdir(save_path)))
# 遍历由路径组成的 list,处理方式分别为 “剪下” 或是 “复制” 两种,到指定储存文件夹里面
for n, folder in enumerate(folder_path_list):
    cut_copy = str(input(
        'As for path {}, Cut for "x" and Copy for "c": '.format(n + 1)))

    # 如果按下的键盘按键是 'x',对所有原文件夹里面的文件以 full_path 的路径规范移动同时并修改档名到指定文件夹
    if cut_copy == 'x':
        for m, file in enumerate(os.scandir(folder)):
            new_ordered_name = '{:06}'.format(m + 1 + file_num)
            extend_name = os.path.splitext(file.name)[1]
            new_file_name = new_ordered_name + extend_name

            full_path = os.path.join(save_path, new_file_name)
            shutil.move(file.path, full_path)

    # 同理拷贝功能,shutil.copy 和 shutil.move 都有以一个新的名字移动到指定位置的功能,这样就不怕同名字不同原路径的文件移动时彼此冲突了
    elif cut_copy == 'c':
        for m, file in enumerate(os.scandir(folder)):
            new_ordered_name = '{:06}'.format(m + 1 + file_num)
            extend_name = os.path.splitext(file.name)[1]
            new_file_name = new_ordered_name + extend_name

            full_path = os.path.join(save_path, new_file_name)
            shutil.copy(file.path, full_path)

    # 如果不是按下拷贝或是剪下的按键,则不断重来直到按了其中一个为止
    while cut_copy not in ['x', 'c']:
        print('There are only two option here.')
        cut_copy = str(input(
            'As for path {}, Cut for "x" and Copy for "c": '.format(n + 1)))

    # 每次循环的尾端更新计数器里面的数字,看又有多少文件被移入了汇总的文件夹
    # 在用文件数量编号命名的时候可以继续上个文件夹结尾的数字更新档名(避开从头开始的尴尬场面)
    file_num = file_num + len(os.listdir(folder))

由于花的时间不多,没有完整透彻的把整个 module 的相关函数都研究一遍,因此程序脚本跑起来会有些限制条件没有解决,但是用的时候注意的话还算是一个通用的脚本。


思路整理与步骤:

  1. 定义问题:不知道有几个文件夹的情况下,要把这些文件夹里面的文件全部整合到一个新的文件夹中,并且自动依照档案的数量对文件命名。
  2. 把不知道的部分作为 input 项让使用者根据当时情况输入,并且可以根据每次需要的量做调整,使整个代码弹性增大。
  3. 设定好一切路径之后,接着选择是剪下还是复制该文件的内容物。
  4. 到了所有文件合并到了一个指定文件夹之后,对其重新命名成为一个有序的整体。


制作小工具的代码可以很好的训练代码的使用规则与函数逻辑,像是个 “生活小品文” 的角色哈。


http://www.niftyadmin.cn/n/3495237.html

相关文章

JavaScript 数据验证类

JavaScript 数据验证类 /* JavaScript:验证类 author:杨波 date:20160323 1、用户名验证 2、密码验证 3、重复密码验证 4、邮箱验证 5、手机号验证 6、验证码验证 */ var yb_validate function(){//用户名验证this.username function(username){if(username.leng…

企业文件会展中心——FTPS

FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。    它和sftp连接方法类…

Excel员工考勤表模板,这三套送给您

考勤表不单单是公司员工每天上班的凭证,还是每个员工领工资的凭证,证据,它记录着员工每个月的上班次数;清晰的考勤表设置也够让员工做到心中有数,考勤表里面主要包括有迟到、早退、病假、事假、婚假等多种情况。 以下是…

v-if VS v-show

在vue实现轮播图效果 中分别用到 v-if和 v-show 下面讲讲我理解的他们的区别: v-if: 根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。如果元素是 <template>&#xff0c;将提出它的内容作为条件块。 v-show: 根据表达式的值的真假条…

Alpha 9

摘要 队名&#xff1a;小白吃组长博客&#xff1a;hjj作业博客&#xff1a;冲刺倒计时之9团队部分 后敬甲&#xff08;组长&#xff09; 过去两天完成了哪些任务 答辩准备中和大佬们跟进进度接下来的计划 准备答辩还剩下哪些任务 持续跟进团队项目进度和老师沟通&#xff0c;确…

PYTHON_opencv 历程总览 - updating

OpenCV 是一个在影像与图像处理上非常实用且方便的一个工具&#xff0c;其庞大程度已经可以算是一个平台&#xff0c;支援了各式各样的编程语言&#xff0c;当然 Python 也是包含其中的“之一”&#xff0c;这个包集成了许多当下流行的图像处理算法&#xff0c;成为了他们呼叫函…

Windows消息队列(优先队列,结构体中放比较函数)

Windows消息队列 消息队列是Windows系统的基础。对于每个进程&#xff0c;系统维护一个消息队列。如果在进程中有特定事件发生&#xff0c;如点击鼠标、文字改变等&#xff0c;系统将把这个消息加到队列当中。同时&#xff0c;如果队列不是空的&#xff0c;这一进程循环地从队列…

Java架构-JVM垃圾回收机制

一、简介 Java GC&#xff08;Garbage Collection&#xff0c;垃圾回收&#xff09;机制&#xff0c;是Java与C/C的主要区别之一 在C/C语言中&#xff0c;程序员必须小心谨慎地处理每一项内存分配&#xff0c;且内存使用完后必须手工释放曾经占用的内存空间。当内存释放不够完全…