巧用Python:用Python批量复制文件,方法有9种,方便快捷

article/2025/9/23 14:30:13

当我们复制一个文件时用复制粘贴就可以了,如果是多个文件呢?就会很麻烦了,今天给大家介绍一下用Python批量复制文件,方法有九种!希望对你有帮助

1. Shutil Copyfile()方法

该方法只有在目标可写时才将源的内容复制到目的地。如果您没有写入权限,则会引发IOError

它通过打开输入文件进行阅读,忽略其文件类型。接下来,它不会对特殊文件进行任何不同的处理,也不会将它们复制为新的特殊文件。

所述的CopyFile()方法利用较低级别的功能的copyfileobj()的下方。它将文件名称作为参数,打开它们并将文件句柄传递给copyfileobj()。该方法中有一个可选的第三个参数,您可以使用它来指定缓冲区长度。然后它将打开文件以读取指定缓冲区大小的块。但是,默认行为是一次性读取整个文件。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

以下是有关copyfile()方法的要点。

  • 它将源的内容复制到名为目标的文件。
  • 如果目的地不可写,则复制操作将导致IOError异常。
  • 如果源文件和目标文件都相同,它将返回SameFileError
  • 但是,如果目的地以不同的名称预先存在,则副本将覆盖其内容。
  • 如果目的地是目录,则意味着此方法将不会复制到目录,将会发生错误13。
  • 它不支持复制文件,如字符或块设备和管道。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

2. Shutil Copy()方法

巧用Python:用Python批量复制文件,方法有9种!方便快捷

copy()方法的功能类似于"CP"在Unix命令。这意味着如果目标是一个文件夹,那么它将在其中创建一个与源文件相同的名称(basename)的新文件。此外,该方法将复制其内容后将目标文件的权限与源进行同步。 如果要复制相同的文件,它也会抛出SameFileError

巧用Python:用Python批量复制文件,方法有9种!方便快捷

巧用Python:用Python批量复制文件,方法有9种!方便快捷

3. Shutil Copyfileobj()方法

此方法将文件复制到目标路径或文件对象。如果目标是文件对象,则需要在调用copyfileobj()之后明确关闭它。它假设一个可选参数(缓冲区大小),您可以使用它来提供缓冲区长度。这是在复制过程中保存在内存中的字节数。系统使用的默认大小为16KB。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

4. Shutil Copy2()方法

但是,copy2()方法的功能类似于copy()。但是,在复制数据的同时,也可以在元数据中添加访问和修改时间。复制同一个文件会导致SameFileError

巧用Python:用Python批量复制文件,方法有9种!方便快捷

对于好奇 – Copymode()与Copystat()之间的区别。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

5. Os Popen()方法

该方法创建一个指向或来自该命令的管道。它返回一个连接到管道的打开的文件对象。您可以根据文件打开模式(即'r'(默认)或'w')使用它进行读取或写入。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

  • 模式 –它可以是'r'(默认)或'w'。
  • fsize –如果其值为0,则不会发生缓冲。如果设置为1,则在访问文件时将进行行缓冲。如果您提供的值大于1,则缓冲将以指定的缓冲区大小进行。但是,对于负值,系统将采用默认缓冲区大小。

对于Windows操作系统。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

对于Linux操作系统。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

6. Os System()方法

它是运行任何系统命令的最常见方式。使用system()方法,可以在subshell中调用任何命令。在内部,这种方法会调用标准的C库函数。

此方法返回命令的退出状态。

对于Windows操作系统。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

对于Linux操作系统。

 

7.以Async方式使用线程库的Python文件复制

如果要以异步方式复制文件,请使用以下方法。在这里,我们使用Python的线程模块在后台运行复制操作。

使用此方法时,请确保采用锁定以避免死锁。如果您的应用程序正在使用多个线程读取/写入文件,您可能会面对它。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

8.使用子进程的Call()方法在Python中复制一个文件

子进程模块提供了一个简单的界面来处理子进程。它使我们能够启动子进程,附加到其输入/输出/错误管道,并检索返回值。

子流程模块旨在替代传统模块和功能,如os.system,os.spawn *,os.popen *,popen2。*

它公开一个call()方法来调用系统命令来执行用户任务。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

9.使用子进程的Check_output()方法在Python中复制文件

使用子进程check_output()方法,可以运行外部命令或程序并捕获其输出。它还支持管道。

巧用Python:用Python批量复制文件,方法有9种!方便快捷

更多Python视频、源码、资料加群531509025免费获取

学会了吗?

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐
 

Python爬虫案例教程推荐

 


http://chatgpt.dhexx.cn/article/lDH53dDl.shtml

相关文章

Python 复制一份文件

前言 本文讲述如何复制一份文件,用例是复制模板.xlsx文件到相同目录下,复制后的文件名为模板1.xlsx。 该代码运行有个前提就是,你必须要有一份被复制的文件,否则将复制不成功 这个方法可以复制word文件等等。只要修改文件的后缀…

多项式全家桶 基础知识+各种操作+例题(细节证明)

目录 前置知识:NTT大模数技巧 基础知识求导泰勒展开 操作讲解无泰勒展开多项式求导 & 积分多项式逆元多项式取模多项式 & 多项式除法多项式最大公因式 & 最小共倍式多项式多点求值多项式自然对数 泰勒展开应用:牛顿迭代多项式exp多项式任意幂…

逆用“端点效应”,成就放缩之道——针对超越函数的双值拟合放缩

本文旨在提出一种使用二次函数、三次函数拟合超越函数的方法 Part 1、问题的引子 1.1 端点效应 若函数 f ( x ) 在 ( x 1 , ∞ ) 上 ≥ 0 且 f ( x 1 ) 0 , 则 f ′ ( x 1 ) > 0. 做 题 时 , 可 先 求 出 结 果 范 围 再 验 证 其 充 分 性 f(x)在(x_1,\inf…

三种求最短路算法基本描述及实现(C++)

比较: FloyedDijkstra(优先队列优化)SPFA(优先队列优化)时间复杂度o(n^3)o(nm)(logm)o(km)基本思想动态规划贪心贪心适用范围无负环图无负权图无负环图多源最短路不含负权图的低复杂度解含负权边时的单源最短路求解 1.Floyed算法 变量声明: n&#xf…

python中0x3f_单片机中0x3f代表什么意思

展开全部 单片机中0x3f代表16进制数62616964757a686964616fe78988e69d83313334313566623F,即0011 1111B或63D(B代表二进制,D代表十进制),在单片机中常用于配置IO口的输入输出或寄存器的相关配置,实际意义指二进制对应位为高电平。…

51单片机LED数码管

LED显示器分为共阴极(发光二极管所有的阴极连接在一起)和共阳极(所有的阳极都连接在一起)两种。 共阴高电平有效 共阳低电平有效 char led[] {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 共阴接法0~9 共阳取反就行 …

单片机 0xff是什么意思

0x是16进制的前缀。单片机中对寄存器或IO口操作都是用十六位进制表示,比如oxaa,代表二进制的1010(a) 1010(a)。在书写时0x代表十六位进制。 16进制就是逢16进1,但我们只有0~9这十个数字&#x…

python中0x3f_类似于0x3F是什么意思?怎么转换?

展开全部 单片机中0x3f代表16进制数3F,即00111111B或63D(B代表二进制,D代表十进制),在单片机中常用于配置62616964757a686964616fe78988e69d8331333436316265IO口的输入输出或寄存器的相关配置,实际意义指二进制对应位为高电平。 …

c++ 0x3f 0x3f3f 0x3f3f3f 0x3f3f3f3f的具体值

RT,做题的时候因为没有把最大值设置好,导致有一个点没有过去。现在记录一下0x3f之类的数值,以方便日后的使用 0x3f:代表的数值63 0x3f3f:代表的数值16191 10的四次方多 0x3f3f3f:代表的数值4144959 10的六…

0x3f3f3f3f是什么意思

经常会看到大佬的定义中出现有一些这样的东西,经过多方印证查阅可以找到介绍讲解 0x3f3f3f3f的十进制是1061109567,是10^9级别的,而一般场合下的数据都是小于10^9的,所以它可以作为无穷大使用而不致出现数据大于无穷大的情形。 …

图论中的0x3f和memset使用注意事项(较详细)

图论中的memset和0x3f 写此博客的背景 相信有很多同学在看别人图论专题的题解、板子的时候经常看到下面两句: const int INF 0x3f3f3f3f; memset(d, INF, sizeof(d));或者下面这样: memset(d, 0x3f, sizeof(d));很多同学都不明所以,只知…

双三次插值算法

配合阅读:https://blog.csdn.net/nandina179/article/details/85330552 今天学习了第三种图像缩放的方法,双三次插值法。由于理解能力比较差,看了好久的公式,还是云里雾里,但是为了督促自己学习,还是把已知…

图像的放大:双三次插值算法(C++实现)

双线性插值算法的不足就是细节处理的不好,换句话说,就是曲线拟合得不够光滑,所以又有了双三次插值算法。双三次插值算法是基于周围的16个像素点,通过计算16个像素点的权重,累积得到增加点的像素值的。 简单点理解&…

图像插值理论研究——双三次插值(双立方插值)

双三次插值,英文是Bicubic interpolation。双三次插值是一种更加复杂的插值方式,它能创造出比双线性插值更平滑的图像边缘。双三次插值方法通常运用在一部分图像处理软件、打印机驱动程序和数码相机中,对原图像或原图像的某些区域进行放大。A…

FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码

目录 一、三种图像缩放算法介绍线性插值双线性插值双三次插值 二、HLS实现线性插值图像缩放三、HLS实现双线性插值图像缩放四、HLS实现双三次插值图像缩放五、HLS在线仿真并导出IP六、其他FPGA型号HLS在线仿真并导出IP七、zynq7100开发板vivado工程八、上板调试验证九、福利&am…

数字图像处理100问—27 双三次插值( Bicubic Interpolation )

提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 27 双三次插值( Bicubic Interpolation ) 使用双三次插值将图像放大1.5倍 双三次插值是双线性插值的扩展,使用邻域…

用于数字成像的双三次插值技术​

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 双三次插值是使用三次或其他多项式技术的2D系统,通常用于锐化和放大数字图像。在图像放大、重新采样时,或是在软件中润饰和编辑图像时也会使到用…

插值算法(最邻近差值、双线性插值、双三次插值)

一、最邻近差值(nearest) 含义: 选取离目标点最近的点的值作为新的插入点的值。 两幅图坐标值变换关系: (代码未验证) for i1:size(dist,1)x round(i* (size(src,1)/size(dist,1))); %dst横坐标变换到s…

matlab双线性插值双三次插值对CUFED5进行处理

本文是摘抄与总结,仅供自己学习和日后查阅使用。 可以自己写一个双线性插值函数, ------------------------------------------------------------------- function outputimg my_imresize(A,n) % A 是图像矩阵,n是放缩的倍数 % 返回值outputimg是一…