python复制文件夹内容

参考博客
https://blog.csdn.net/itfans123/article/details/133710731

案例1

import os
import shutil
 
def copy_folder(source_folder, destination_folder):
  # 创建目标文件夹
    os.makedirs(destination_folder, exist_ok=True)
    # 遍历源文件夹中的所有文件和文件夹
    for item in os.listdir(source_folder):
        source_item = os.path.join(source_folder, item)
        destination_item = os.path.join(destination_folder, item)
 
        # 判断是否为文件夹
        if os.path.isdir(source_item):
            # 递归复制子文件夹
            copy_folder(source_item, destination_item)
        else:
            # 复制文件
            shutil.copy2(source_item, destination_item)
 
    print("所有文件复制完成")
# 示例用法

copy_folder("./问价1/","./file/")

这里的例子相当于重新复制一份文件夹问价1,然后重新命名为file。注意里面的内容也被复制

案例2


import os
import shutil

def copy_folder(source_folder, destination_folder):

创建目标文件夹

os.makedirs(destination_folder, exist_ok=True)
# 遍历源文件夹中的所有文件和文件夹
for item in os.listdir(source_folder):
    source_item = os.path.join(source_folder, item)
    destination_item = os.path.join(destination_folder, item)

    # 判断是否为文件夹
    if os.path.isdir(source_item):
        # 递归复制子文件夹
        copy_folder(source_item, destination_item)
    else:
        # 复制文件
        shutil.copy2(source_item, destination_item)

print("所有文件复制完成")

示例用法

import os
import shutil
 
def copy_folder(source_folder, destination_folder):
  # 创建目标文件夹
    os.makedirs(destination_folder, exist_ok=True)
    # 遍历源文件夹中的所有文件和文件夹
    for item in os.listdir(source_folder):
        source_item = os.path.join(source_folder, item)
        destination_item = os.path.join(destination_folder, item)
 
        # 判断是否为文件夹
        if os.path.isdir(source_item):
            # 递归复制子文件夹
            copy_folder(source_item, destination_item)
        else:
            # 复制文件
            shutil.copy2(source_item, destination_item)
 
    print("所有文件复制完成")
# 示例用法

copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")
#copy_folder(x,x.replace("/Users/alex/Desktop/htdocs/hj/plugins", "/Users/alex/Desktop/htdocs/hj/web/plugins"))

注意这个路径,原先的路径为
在这里插入图片描述当复制完,file里面的结果变成

在这里插入图片描述

案例3)(显示复制路径)

import os
import shutil
 
def copy_folder(source_folder, destination_folder):
  # 创建目标文件夹
    os.makedirs(destination_folder, exist_ok=True)
    # 遍历源文件夹中的所有文件和文件夹
    for item in os.listdir(source_folder):
        source_item = os.path.join(source_folder, item)
        destination_item = os.path.join(destination_folder, item)
 
        # 判断是否为文件夹
        if os.path.isdir(source_item):
            # 递归复制子文件夹
            copy_folder(source_item, destination_item)
        else:
            # 复制文件
            shutil.copy2(source_item, destination_item)
            print("{}-->复制-->{}完成!!!".format(source_item,destination_item))
# 示例用法

copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")

在这里插入图片描述

加条件的复制

import os
import shutil
 
def copy_folder(source_folder, destination_folder):
  # 创建目标文件夹
    #print(destination_folder)
    
    os.makedirs(destination_folder, exist_ok=True)
    # 遍历源文件夹中的所有文件和文件夹
    for item in os.listdir(source_folder):
        source_item = os.path.join(source_folder, item)
        destination_item = os.path.join(destination_folder, item)
 
        # 判断是否为文件夹
        if os.path.isdir(source_item):
            # 递归复制子文件夹
            copy_folder(source_item, destination_item)
        else:
            # 复制文件
            parent_dir = os.path.dirname(source_item)
            _, last_parent_folder = os.path.split(parent_dir)
            if ('t1' in last_parent_folder) or ('T1' in last_parent_folder):
                shutil.copy2(source_item, destination_item)
                print("{}-->复制-->{}完成!!!".format(source_item,destination_item))
# 示例用法

copy_folder("./问价1/A/","./file/")
copy_folder("./问价1/B/","./file/")

# 这种做法有一个问题,就是会新建T2的文件夹

结果如下
在这里插入图片描述
注意这个结果是有一点毛病,就是不符合条件的文件夹仍然会被复制,只不过是空文件夹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/551394.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【简单讲解下如何用爬虫玩转石墨文档】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

力扣算法-回溯

递归 104.二叉树的最大深度 回溯 17.电话号码的字母组合 ①子集型回溯 78.子集 (1)选不选 (2)选哪个 131.分割回文串 (1593.拆分字符串使唯一子字符串的数目最大 也可以用这个思路解:从结果角度,分割字符串) ②组合型回溯…

【C++】哈希二

上篇博客我们写了解决哈希冲突的两种办法,不过我们写的都是针对整形的,而在实际情况下,要存入哈希表中的数据可以是string或自定义类型等等。那么我们就应该想一种办法去解决这里的问题。 比如说string,我们想到如何让string也转为…

代码随想录算法练习Day11:链表相交

题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 题目链接:160.链表相交 题目思路:定义两个指针,分别遍历两链表,如…

后端获取请求体Body,将请求体进行解密放回Request请求,并能通过@RequestBody获取

目前系统发送的post和put请求都是没有加密数据。客户需要将请求体加密。而系统已经基本开发完成,不可能一个一个去修改发送的请求。就需要在发送请求时候在拦截器中将body进行加密。并且在后端进行请求过滤解密,并且能通过RequestBody继续获取对象。 1.…

RuoYi-Cloud部署实战(手动部署)

RuoYi-Cloud部署实战 语雀 1. 若依源码和架构 RuoYi-Cloud: 🎉 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本 若依项目结构 带端口号的是需要启动的服务 com.ruoyi ├── ruoyi-ui …

各大厂都推出鸿蒙APP了,你就一定要学习一下鸿蒙APP测试了!

2023年8月,华为推出鸿蒙4.0,由于其广泛的用户基础和品牌传播力,在短短几个月的时间,使用鸿蒙4.0系统的设备就达到千万级别,并且在9月份发售Mate 6之后,还在装机量的增长更加迅猛。 基于此,11月…

德立电子授权世强先进代理分销,加速车规级磁性元器件产品拓展

为提供先进、可靠的磁性元件产品,世强先进(深圳)科技有限公司与惠州市德立电子有限公司(下称“德立电子”,英文名:DDY) 签署授权代理合作协议,旨在为汽车电子、工业、消费、通信、医…

Java GUI制作双人对打游戏(上)

文章目录 前言什么是Java GUI一、打开IDEA 新建一个Maven项目(后续可以打包、引入相关依赖也很容易)二、引入依赖三.绘制UI界面四.绘制JPanel面板总结 前言 什么是Java GUI Java UI,即Java用户界面,是指使用Java编程语言创建的图形用户界面&#xff08…

实现分布式锁

实现分布式锁的两个核心: 一、获取锁 1、获取锁线程互斥性 为了实现只有一个线程能继续执行业务代码,必须保证获取锁具有互斥性,即只有一个线程能获取到锁。 Redis中操作数据是单线程的,可以使用Redis提供的set nx ex命令获取锁。…

鸿蒙原生应用元服务-访问控制(权限)开发等级和类型

一、权限等级说明 根据接口所涉数据的敏感程度或所涉能力的安全威胁影响,ATM模块定义了不同开放范围的权限等级来保护用户隐私。 应用APL等级说明 元能力权限等级APL(Ability Privilege Level)指的是应用的权限申请优先级的定义,…

Ubuntu 22.04 安装 zabbix

Ubuntu 22.04 安装 zabbix 1,Install Zabbix repository2,安装Zabbix server,Web前端,agent3,安装mysql数据库3.1 创建初始数据库3.2 导入初始架构和数据,系统将提示您输入新创建的密码。3.3 在导入数据库架…

课题学习(二十一)----姿态更新的四元数算法推导

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    最近需要使用AEKF对姿态进行结算,所以又对四元数进了深入的学习,本篇博客仅对四元数进行推导,后续会对基于四元数的…

kafka学习笔记03

SpringBoot2.X项目搭建整合Kafka客户端依赖配置 用自己对应的jdk版本。 先加上我们的web依赖。 添加kafka依赖: SpringBoot2.x整合Kafka客户端adminApi单元测试 设置端口号。 新建一个kafka测试类: 创建一个初始化的Kafka服务。 设置kafka的名称。 测试创建kafka。…

Gitee和Git学习笔记

Gitee和Git指令 Gitee提交代码方法1 先将仓库clone到本地,修改后再push到 Gitee 的仓库方法2 本地初始化一个仓库,设置远程仓库地址后再做push 切换分支下载代码通过git clone克隆仓库通过下载 ZIP 的方式下载代码 Git提交指令 解决本地库同时关联GitHub…

数据库SQL语言实战(三)

删除操作 本篇文章重点在于SQL中的各种删除操作 题目一 删除表中的学号不全是数字的那些错误数据,学号应该是数字组成,不能够包含字母空格等非数字字符。方法之一:用substr函数,例如Substr(sid,1,1)返回学号的第一位&#xff0…

数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!

🧸欢迎来到dream_ready的博客,📜相信您对博主首页也很感兴趣o (ˉ▽ˉ;) 博主首页,更多redis、java等优质好文以及各种保姆级教程等您挖掘! 目录 需求分析 常用案例举例 加盐加密逻辑如何对比原数据&…

分布式光纤测温解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、方案介绍 分布式光纤测温(DTS)集光电信号检测、计算机技术等为一体,具有实时监测、测温精度高、测量距离长、可精确定位、采用光纤作为传感器和传输介质,具有抗电磁干扰、本征防…

GVRP协议与动态、静态vlan

一、GVRP协议使用场景 1、当实际组网复杂到网络管理员无法短时间内了解网络的拓扑结构,或者是整个网络的VLAN太多时,工作量会非常大,而且非常容易配置错误。在这种情况下,用户可以通过GVRP的VLAN自动注册功能完成VLAN的配置。 2、…

【Vue3】setup语法糖的使用

文章目录 setup简介使用vite-plugin-vue-setup-extend插件 指定组件名字 setup简介 <script setup> 是在单文件组件 (SFC) 中使用组合式 API 的编译时语法糖 相比较普通的<script> ,它有以下优势&#xff1a; 更少的样板内容&#xff0c;更简洁的代码。能够使用纯…