Python 如何将文件从一个文件夹复制到另一个文件夹
文件是存储在计算机上的信息或数据的集合。你已经对几种文件类型非常熟悉,比如音频、视频和文本文件。
文本文件和二进制文件是我们通常将文件分为的两个类别。简单的文本包含在文本文件中,而二进制数据则只能被计算机读取。
一组文件和子目录称为目录或文件夹。子目录是存在于目录内的目录。可以自动执行许多操作系统功能。
使用Python进行文件操作
Python提供了各种方法来执行底层操作系统的文件和文件夹操作。
- Python的OS模块中提供了用于添加和删除文件夹、检索其内容、更改目录、定位当前目录等功能的函数。导入该模块后,我们将使用其listdir()方法来获取文件。
-
类似地,shutil模块提供了一些用于处理文件和相关集合的操作的函数。它提供了复制和删除文件的选项。您可以使用该模块的shutil.copy()、shutil.copy2()和shutil.copytree()方法将一个文件夹的内容复制到另一个文件夹。
您可以通过导入它们各自的模块来将这些函数包含在您的文件中,如下所示 –
import shutil
shutil.submodule_name(arguments passed)
使用shutil.copy()操作
使用这个函数,源文件的文本或内容将被复制到目标文件或目录。此外,文件的权限模式会被保留,但文件的元数据(如“创建日期”,“修改日期”等)不会被保留。
语法
下面是shutil.copy()方法的语法−
shutil.copy(origin, target)
如下所示:
- origin – 一个包含源文件位置或路径的字符串
-
target – 一个包含目标文件位置或路径的字符串。
示例
以下是使用shutil.copy ()操作将文件从一个文件夹复制到另一个文件夹的示例 –
# importing the modules
import os
import shutil
# Providing the folder path
origin = 'C:\Users\Lenovo\Downloads\Works'
target = 'C:\Users\Lenovo\Downloads\Work TP'
# Fetching the list of all the files
files = os.listdir(origin)
# Fetching all the files to directory
for file_name in files:
shutil.copy(origin+file_name, target+file_name)
print("Files are copied successfully")
输出
以下是上述查询的输出:
Files are copied successfully
注意 − 一个文件可以使用相对路径和绝对路径进行复制。文件在磁盘上的位置由路径表示。
包含了查找文件所需的完整目录列表的是绝对路径。例如,查找samples.txt的绝对路径为− C:\Users\Lenovo\Downloads\Works 。
这里我们提供了源文件和目标文件的文件夹路径。
使用shutil.copy2()操作
首先,这个函数与copy() 函数完全相同,唯一的区别是它会跟踪源文件的元数据。
这个函数的执行过程与shutil.copy()完全相同。唯一的区别是,在将文件复制到目录时,我们使用shutil.copy2(),而不是shutil.copy()。
shutil.copy2(origin+file_name, target+file_name)
语法
以下是shutil.copy2()方法的语法:
shutil.copy2(src, dst, follow_symlinks=True)
shutil.copy2(origin, target)
原始值和目标值与上述定义的相同。
在这段代码中,copy2()函数除了执行copy()操作外,还会保留元数据。
使用shutil.copytree()方法
此函数将一个文件及其包含的任何子目录从一个目录移动到另一个目录。
这表示源目录和目标目录都包含该文件。字符串必须包含两个参数的名称。
语法
shutil.copytree()方法的语法如下:
shutil.copytree(origin, target)
原始值和目标值与上面定义的相同。
示例
以下是使用shutil.copytree()操作从一个文件夹复制文件到另一个文件夹的示例:
# importing the module
import shutil
# Fetching all the files to directory
shutil.copytree('C:\Users\Lenovo\Downloads\Works','C:\Users\Lenovo\Downloads\Work TP\/newfolder')
print("File Copied Successfully")
输出
以下是上述查询的输出:
File Copied Successfully
作为输出,我们将能够看到执行后所做的更改,即将’Works’文件夹以代码中分配的名为’newfolder’的名字复制到’Works TP’文件夹中,并包含其中的所有文件,这些文件在’Works’文件夹中已经存在。
为了获取该文件的副本,我们在这段代码中包含了copytree()函数。