在 Python 中复制文件:shutil.copy()、shutil.copystat() 方法
Python 复制文件方法
Python 提供了内置函数,可以使用操作系统 Shell 实用程序轻松复制文件。
以下命令用于复制文件
shutil.copy(src,dst)
以下命令用于复制带有元数据信息的文件
shutil.copystat(src,dst)
如何在 Python 中复制文件
以下是在 Python 中使用 shutil copy() 方法复制文件的步骤:
步骤 1) 获取当前目录下的原始路径
在复制文件之前,我们需要获取当前目录下原始文件的路径。在代码中——
- 声明变量
- 对变量应用拆分函数
代码说明
- 首先我们要检查我们的“guru99.txt”文件是否存在。由于我们之前已经创建了 guru99.txt 文件,所以我们知道它存在,我们将继续编写代码
- 我们将文件路径存储在变量“src ” 如果您的文件存在
- 获得路径后,我们将路径和文件名分开
- 为此,我们将使用拆分
path.split
源变量上的函数 - 执行代码时打印出“文件名 ”和“文件路径 ” 分开
步骤 2) 使用 shutil 模块创建现有文件的副本
我们使用 Shutil 模块创建现有文件的副本。在这里,我们用于创建现有文件“guru99.txt”的副本。
代码说明
- 取原文件名“guru99.txt”,在“guru99.txt.bak”后面加上字母.bak。这个带有 .bak 扩展名的名字将是我们的副本
- 然后我们将使用实用程序的复制功能从源复制到目标
- 运行代码时,您会看到在面板右侧创建了一个扩展名为 .bak 的重复文件
步骤 3) 复制与文件关联的元数据、文件权限等信息
复制功能只复制文件内容,不复制其他信息。复制元数据 与文件、文件权限等相关信息必须使用“copystat “ 功能。在我们运行这段代码之前,我们必须删除我们的复制文件“guru99.text.bak”。
删除文件并运行程序后,它将创建 .txt 文件的副本,但这次包含所有信息,如文件权限、修改时间和元数据信息 .你可以到你的 OS shell 去验证信息。
这里是代码
import os import shutil from os import path def main(): # make a duplicate of an existing file if path.exists("guru99.txt"): # get the path to the file in the current directory src = path.realpath("guru99.txt"); #seperate the path from the filter head, tail = path.split(src) print("path:" +head) print("file:" +tail) #let's make a backup copy by appending "bak" to the name dst = src+".bak" # nowuse the shell to make a copy of the file shutil.copy(src, dst) #copy over the permissions,modification shutil.copystat(src,dst) if __name__=="__main__": main()
第 4 步) 获取信息
可以获取上次修改的文本文件的信息
- 代码行#15- 它告诉最后一次修改 .txt 文件 (guru99) 的日期、日期、月份、年份和时间。我们使用path模块获取文件修改时间详情,然后我们将使用time classes c time function 将其转换为可读时间。因此,当我们运行代码时,我们可以看到文件 guru99.txt 最后一次修改是在 1 月 8 日星期一 th 2018 年 13:35。
- 代码行#17- 它提供有关文件修改的信息的功能相同,但它具有不同的格式来表示它。这里我们使用获取修改时间函数 (path.getmtime(“guru99.txt”))。现在我们将使用 From Time Stamp function 而不是使用 c 时间函数 并构造一个日期时间对象。在输出中,您可以看到文件修改时间详细信息以不同的格式打印出来 2018-01-08, 13:35:51.334072
这里是代码
# # Example file for working with o.s path module import os from os import path import datetime from datetime import date, time, timedelta import time def main(): # Get the modification time t = time.ctime(path.getmtime("guru99.txt.bak")) print(t) print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak"))) if __name__ == "__main__": main()
总结
- 使用代码创建现有文件的副本 shutil.copy (src,dst)
- 将原始文件的所有信息复制到复制文件,如文件权限、修改时间或元数据信息 通过使用代码 shutil.copystat(src,dst)
Python