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

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:

  1. 判断源文件是否存在
  2. 判断目标文件夹是否存在
  3. 判断是否已存在该文件
  4. 判断已存在文件是否打开
  5. 判断是否需要替换掉已存在文件

注意:复制文件会改变时间属性(创建日期、修改日期),不再是源文件的时间属性

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:复制、移动文件到指定文件夹

需要考虑的问题&#xff1a; 指定文件夹是否存在&#xff0c;不存在则创建在指定文件夹中是否存在同名文件&#xff0c;是覆盖还是另存为 import os import shutil import tracebackdef copyfile(srcfile, dstpath, replaceFalse):"""复制文件到指定文件夹par…...

类和对象(中篇)

类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a; 用户没有显式实现&#xff0c;编译器会…...

简单几步完成SVN的安装

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

NFS原理详解

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

查询后矩阵的和

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

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

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

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析

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

【数据结构】并查集的简单实现,合并,查找(C++)

文章目录 前言举例&#xff1a; 一、1.构造函数2.查找元素属于哪个集合FindRoot3.将两个集合归并成一个集合Union4.查找集合数量SetCount 二、源码 前言 需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规…...

2023美团商家信息

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

0155 - Java 数组

1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合&#xff0c;实现对这些数据…...

Java 语言有哪些特点

Java语言具有以下特点&#xff1a; 简单易学&#xff1a;Java语法相对简单&#xff0c;与C相比更容易上手。 面向对象&#xff1a;Java是一门纯粹的面向对象编程语言&#xff0c;支持封装、继承和多态等面向对象的特性。 平台无关性&#xff1a;Java程序可以在不同的操作系统…...

SAP 特殊采购类50简介----虚拟件

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

C语言——内存函数的使用与模拟实现

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing 原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位…...

Mysql索引事务(面试高频)

文章目录 目录 文章目录 前言 一 . 索引 1.1 概念 1.2 作用 1.3 使用场景 1.4 存储引擎 二 . 事务 2.1 事务的概念 2.2 事务四大特性 前言 大家好,今天给大家绍一下mysql索引和事务 一 . 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表中的所有记录的引用指针…...

SpringCloudGateway 3.1.4版本 Netty内存泄漏问题解决

一、 产生的异常 当时是服务器访问不到服务了&#xff0c;上去一看&#xff0c;无法申请资源OutOfDirectMemoryError了&#xff0c;内存级别的东西让人一阵头大&#xff0c;赶紧在线下模拟&#xff0c; 1. 减少分配的堆外内存&#xff0c;打开Netty的监测工具等有助于复现的…...

STM32内部是怎么工作的

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

MyBatis的配置文件

目录 MyBatis配置 1.properties标签 2.typeAliases标签 3.Mappers标签 一个最全面的MyBatis配置文件可能会包含各种不同的设置和选项&#xff0c;根据实际情况&#xff0c;可以根据需要添加或删除配置。以下是一个包含各种可能设置的示例。 这个配置文件包含了环境设置、数…...

MCU平台下确定栈空间大小的方法

本文介绍MCU平台下确定栈空间大小的方法。 通常使用IDE开发MCU程序在生成Image文件时&#xff0c;Image文件被划分为代码区&#xff0c;数据区&#xff0c;BSS区&#xff0c;堆区&#xff0c;栈区。其中&#xff0c;代码区&#xff0c;数据区&#xff0c;BSS区空间大小由编译器…...

Flink系列之:SQL提示

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

机器学习算法---聚类

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

实战指南:如何通过Vosk API实现95%+准确率的离线语音识别系统

实战指南&#xff1a;如何通过Vosk API实现95%准确率的离线语音识别系统 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-ap…...

从癌症研究到企业风控:用Python实战Cox比例风险模型(附完整代码与数据)

从医学到商业&#xff1a;Python实战Cox风险模型的企业级应用 在医疗领域&#xff0c;我们关心患者存活时间&#xff1b;在商业世界&#xff0c;我们关注客户生命周期。看似迥异的场景背后&#xff0c;都隐藏着同一个数学工具的身影——Cox比例风险模型。这个诞生于1972年的生存…...

AI技能包实战:用cc-skills打造专业级AI编程助手

1. 项目概述&#xff1a;为你的AI助手装上“专业工具箱”如果你和我一样&#xff0c;每天都在和Claude、Cursor、Copilot这类AI编程助手打交道&#xff0c;那你肯定遇到过这样的场景&#xff1a;想让AI帮你写一篇符合公司技术博客规范的PR稿&#xff0c;或者生成一段精准的Prom…...

GLIGEN图像空间控制:用边界框实现像素级精准生成

1. GLIGEN&#xff1a;不是又一个“AI画图玩具”&#xff0c;而是图像生成控制权的真正移交你有没有试过对着 Stable Diffusion 的提示词框反复修改半小时&#xff0c;就为了把一只猫准确地放在沙发左边、让咖啡杯稳稳立在桌面上、让窗外的梧桐树只出现在画面右上角——结果生成…...

别再混淆了!SVPWM算法中2Udc/3和Udc的电压幅值到底指什么?一个图讲清楚

别再混淆了&#xff01;SVPWM算法中2Udc/3和Udc的电压幅值到底指什么&#xff1f;一个图讲清楚 在电力电子和电机控制领域&#xff0c;SVPWM&#xff08;空间矢量脉宽调制&#xff09;算法是变频驱动系统的核心技术之一。许多初学者甚至有一定经验的工程师&#xff0c;在学习和…...

ThunderAI:开箱即用的桌面AI助手,聚合Ollama与多模型应用实战

1. 项目概述&#xff1a;一个开箱即用的AI助手桌面应用最近在折腾本地AI应用的时候&#xff0c;发现了一个挺有意思的项目&#xff0c;叫ThunderAI。这名字听着就挺带劲&#xff0c;像一道闪电&#xff0c;主打的就是一个“快”和“直接”。简单来说&#xff0c;它就是一个基于…...

RK3368安卓9.0固件烧录后开机卡Recovery?手把手教你调整分区表解决4GB闪存空间不足

RK3368安卓9.0固件烧录实战&#xff1a;4GB闪存分区优化全解析 当你满怀期待地将Android 9.0固件烧录到RK3368开发板&#xff0c;却发现设备直接进入了Recovery模式&#xff0c;屏幕上躺着那个令人沮丧的红色感叹号机器人——这可能是每个嵌入式开发者都经历过的"入门仪式…...

如何在Windows上轻松安装APK文件?APK Installer完整指南

如何在Windows上轻松安装APK文件&#xff1f;APK Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上安装安卓应用而烦恼吗&#xff1f;…...

Token Plan 套餐怎么选,Taotoken 预付费模式下的成本控制实践

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Token Plan 套餐怎么选&#xff0c;Taotoken 预付费模式下的成本控制实践 对于有稳定大模型调用需求的开发者或团队而言&#xff0…...

摄像头驱动调试避坑指南:用示波器快速定位I2C不通、MIPI无信号问题

摄像头驱动调试避坑指南&#xff1a;用示波器快速定位I2C不通、MIPI无信号问题 当摄像头模组在硬件调试阶段出现异常时&#xff0c;软件工程师往往会陷入"配置检查-重新烧录-再检查"的死循环。实际上&#xff0c;80%的摄像头初始化失败问题源于硬件信号层面的异常。本…...