Python:复制、移动文件到指定文件夹
需要考虑的问题:
- 指定文件夹是否存在,不存在则创建
- 在指定文件夹中是否存在同名文件,是覆盖还是另存为
import os
import shutil
import tracebackdef copyfile(srcfile, dstpath, replace=False):"""复制文件到指定文件夹@param srcfile: 原文件绝对路径@param dstpath: 目标文件夹@param replace: 如果目标文件夹已存在同名文件,是否覆盖"""try:if not os.path.isfile(srcfile):print("%s not exist!" % (srcfile))else:fpath, fname = os.path.split(srcfile) # 分离文件名和路径suffix = os.path.splitext(srcfile)[-1]# print(fpath, fname, suffix)if not os.path.exists(dstpath):os.makedirs(dstpath) # 创建路径if replace:dstfile = os.path.join(dstpath, fname)shutil.copy(srcfile, dstfile) # 复制文件print("copy %s -> %s" % (srcfile, dstfile))else:i = 1while True:add = ' (%s)' % str(i) if i != 1 else ''dstfile = os.path.join(dstpath, fname.replace(suffix, add + suffix))if os.path.exists(dstfile) and i <= 10:i += 1else:shutil.copy(srcfile, dstfile) # 复制文件print("copy %s -> %s" % (srcfile, dstfile))breakreturn dstfileexcept Exception as e:print('文件复制失败', srcfile)traceback.print_exc()
import os
import shutil
import tracebackdef movefile(srcfile, dstpath, replace=False):"""移动文件到指定文件夹@param srcfile: 原文件绝对路径@param dstpath: 目标文件夹@param replace: 如果目标文件夹已存在同名文件,是否覆盖"""try:if not os.path.isfile(srcfile):print("%s not exist!" % (srcfile))else:fpath, fname = os.path.split(srcfile) # 分离文件名和路径suffix = os.path.splitext(srcfile)[-1]# print(fpath, fname, suffix)if not os.path.exists(dstpath):os.makedirs(dstpath) # 创建路径if replace:dstfile = os.path.join(dstpath, fname)shutil.move(srcfile, dstfile) # 复制文件print("move %s -> %s" % (srcfile, dstfile))else:i = 1while True:add = ' (%s)' % str(i) if i != 1 else ''dstfile = os.path.join(dstpath, fname.replace(suffix, add + suffix))if os.path.exists(dstfile) and i <= 10:i += 1else:shutil.move(srcfile, dstfile) # 复制文件print("move %s -> %s" % (srcfile, dstfile))breakexcept Exception as e:print('文件移动失败', srcfile)traceback.print_exc()
复制文件到指定文件夹V2:
- 判断源文件是否存在
- 判断目标文件夹是否存在
- 判断是否已存在该文件
- 判断已存在文件是否打开
- 判断是否需要替换掉已存在文件
注意:复制文件会改变时间属性(创建日期、修改日期),不再是源文件的时间属性
import os
import shutil
import tracebackdef copyfile(srcfile, dstpath, replace=False):"""复制文件到指定文件夹@param srcfile: 原文件绝对路径@param dstpath: 目标文件夹@param replace: 如果目标文件夹已存在同名文件,是否覆盖"""try:# 判断源文件是否存在assert os.path.isfile(srcfile), "源文件不存在"basename = os.path.basename(srcfile)fname = os.path.splitext(basename)[0] # 不带后缀的文件名suffix = os.path.splitext(srcfile)[-1]# 判断目标文件夹是否存在if not os.path.exists(dstpath):os.makedirs(dstpath) # 创建文件夹,可递归创建文件夹,可能创建失败# 判断目标文件夹是否存在assert os.path.exists(dstpath), "目标文件夹不存在"# 开始尝试复制文件到目标文件夹i = 0while True:i += 1add = '(%s)' % str(i) if i != 1 else ''dstfile = os.path.join(dstpath, fname + add + suffix)opened_dstfile = os.path.join(dstpath, '~$' + fname + add + suffix) # 已打开文件# 判断目标文件夹是否存在该文件if not os.path.exists(dstfile):shutil.copy(srcfile, dstfile) # 不存在则复制文件break# 存在该文件,则判断已存在文件是否打开if os.path.exists(opened_dstfile):# 已打开则创建下一个新文件continue# 已存在文件没有打开的情况if replace:shutil.copy(srcfile, dstfile) # 复制文件break# 不覆盖已存在文件,则创建下一个新文件return dstfileexcept AssertionError as e:print('文件复制失败', e, srcfile)except Exception as e:print('文件复制失败', e, srcfile)if __name__ == "__main__":srcfile = r"C:\Users\Administrator\Desktop\源文件夹\test.txt"dir = r"C:\Users\Administrator\Desktop\目标文件夹"print(copyfile(srcfile, dir, replace=True))
Python复制文件到指定文件夹,遇到相同文件名的处理
https://www.cnblogs.com/johnthegreat/p/12748790.html
python复制、移动文件到指定文件夹_python移动文件到指定文件夹-CSDN博客
文件侠告诉你,Python复制文件的N种姿势! - 云+社区 - 腾讯云
相关文章:
Python:复制、移动文件到指定文件夹
需要考虑的问题: 指定文件夹是否存在,不存在则创建在指定文件夹中是否存在同名文件,是覆盖还是另存为 import os import shutil import tracebackdef copyfile(srcfile, dstpath, replaceFalse):"""复制文件到指定文件夹par…...

类和对象(中篇)
类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数: 用户没有显式实现,编译器会…...

简单几步完成SVN的安装
介绍以及特点 SVN:Subversion,即版本控制系统。 1.代码版本管理工具 2.查看所有的修改记录 3.恢复到任何历史版本和已经删除的文件 4.使用简单上手快,企业安全必备 下载安装 SVN的安装分为两部分,第一部分是服务端安装&…...

NFS原理详解
一、NFS介绍 1)什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。 NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。 在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁…...

查询后矩阵的和
说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 问题描述 给你一个整数 n 和一个下标从 0 开始的 二维数组 queries ,其中 queries[i] [t…...

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解
文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时,提供一种简便的实现方式。 使…...

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析
文章目录 1、问题2.详细日志2.关键日志3.结论4.JDK:bug最终bug链接: 京东遇到过类似bug各位大佬如果有更详细的解答可以留言。 1、问题 服务不通,接口404,查看日志有一下截图,还有一个更详细的日志 2.详细日志 # #…...

【数据结构】并查集的简单实现,合并,查找(C++)
文章目录 前言举例: 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规…...

2023美团商家信息
2023美团商家电话、地址、经纬度、评分、均价、执照......

0155 - Java 数组
1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。 即:数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合,实现对这些数据…...
Java 语言有哪些特点
Java语言具有以下特点: 简单易学:Java语法相对简单,与C相比更容易上手。 面向对象:Java是一门纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的特性。 平台无关性:Java程序可以在不同的操作系统…...

SAP 特殊采购类50简介----虚拟件
今天我们测试一下特殊类50,也就是我们常说的虚拟件。 虚拟物料是库存中实际不存在的物料清单(BOM)的子装配件,它用于简化物料清单。尽管虚拟物料出现在物料清单中,但生产订单显示制造虚拟物料所需的组件,而不是虚拟物料本身。 我们举个列子,生产的手机是有包装的,有盒子…...

C语言——内存函数的使用与模拟实现
大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位…...
Mysql索引事务(面试高频)
文章目录 目录 文章目录 前言 一 . 索引 1.1 概念 1.2 作用 1.3 使用场景 1.4 存储引擎 二 . 事务 2.1 事务的概念 2.2 事务四大特性 前言 大家好,今天给大家绍一下mysql索引和事务 一 . 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表中的所有记录的引用指针…...
SpringCloudGateway 3.1.4版本 Netty内存泄漏问题解决
一、 产生的异常 当时是服务器访问不到服务了,上去一看,无法申请资源OutOfDirectMemoryError了,内存级别的东西让人一阵头大,赶紧在线下模拟, 1. 减少分配的堆外内存,打开Netty的监测工具等有助于复现的…...

STM32内部是怎么工作的
STM32是怎么工作的 1 从孩子他妈说起2 早期计算机的组成2.1 五大元件(1)第一个出场的是电容元件(2)第二个出场的是二极管(3)第三个出场的是电阻元件(4)第四个出场的是电感࿰…...

MyBatis的配置文件
目录 MyBatis配置 1.properties标签 2.typeAliases标签 3.Mappers标签 一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项,根据实际情况,可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。 这个配置文件包含了环境设置、数…...
MCU平台下确定栈空间大小的方法
本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时,Image文件被划分为代码区,数据区,BSS区,堆区,栈区。其中,代码区,数据区,BSS区空间大小由编译器…...

Flink系列之:SQL提示
Flink系列之:SQL提示 一、动态表选项二、语法三、例子四、查询提示五、句法六、加入提示七、播送八、随机散列九、随机合并十、嵌套循环十一、LOOKUP十二、进一步说明十三、故障排除十四、连接提示中的冲突案例十五、什么是查询块 SQL 提示可以与 SQL 语句一起使用来…...

机器学习算法---聚类
类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...