当前位置: 首页 > news >正文

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):
        print("root:{}, dirs:{}, files:{}".format(root, dirs, files))
        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__":
    path_xml = "./deal_datasets/ipotos"  # 当前操作目录
    copyFiles(path_xml, "./come")

参考:https://www.jb51.net/article/147569.htm

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 完美解决ubuntu系统的中文输入法无法写入VS Code的问题
  • 谁比谁活得更长 杜丽
  • AI模型设计:yolov1+darknet+yolov2,3,4,5,X全系列资料汇总[源码仓库]标星收藏
  • C++使用技巧(八):输入输出读写文件
  • C++使用技巧(九):ubuntu环境下Eigen线性代数库的简单使用(C++版本的numpy库))
  • C++使用技巧(十):C++编译生成与调用自定义静态库/动态库
  • 张越:智慧要包括一种向善之心
  • C++使用技巧(十一):函数返回一个数组
  • 张越:每张脸背后都有故事
  • C++使用技巧(十三):Google-GTest测试框架的安装与使用(demo源码实现)
  • C++使用技巧(十四):ubuntu16.04--C++ (Cpp) PCM示例与pcm及音频算法的参考资料
  • 熊节:谁震撼了世界——第14届Jolt奖点评
  • C++使用技巧(十五):类构造函数 与 析构函数
  • 刘江:国外计算机图书月旦评(2004.4)
  • C++使用技巧(十六):智能指针
  • 《剑指offer》分解让复杂问题更简单
  • Android系统模拟器绘制实现概述
  • AngularJS指令开发(1)——参数详解
  • gops —— Go 程序诊断分析工具
  • happypack两次报错的问题
  • leetcode46 Permutation 排列组合
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 给Prometheus造假数据的方法
  • 记一次和乔布斯合作最难忘的经历
  • 如何解决微信端直接跳WAP端
  • 微服务核心架构梳理
  • 微信小程序开发问题汇总
  • 学习使用ExpressJS 4.0中的新Router
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # Apache SeaTunnel 究竟是什么?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #07【面试问题整理】嵌入式软件工程师
  • (3)STL算法之搜索
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (rabbitmq的高级特性)消息可靠性
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (每日一问)基础知识:堆与栈的区别
  • (南京观海微电子)——COF介绍
  • (四)软件性能测试
  • (算法设计与分析)第一章算法概述-习题
  • (学习日记)2024.01.19
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • .NET Core中Emit的使用
  • .net framework 4.8 开发windows系统服务
  • .net 程序发生了一个不可捕获的异常
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET开源、简单、实用的数据库文档生成工具
  • /boot 内存空间不够
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [\u4e00-\u9fa5] //匹配中文字符
  • [001-03-007].第07节:Redis中的事务