复制文件到 Python:shutil.copy()、shutil.copystat()方法
Python 复制文件方法
Python 提供内置函数,可轻松复制文件 Opera系统 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”,并在末尾添加字母 .bak“guru99.txt.bak”。这个带有 .bak 扩展名的名称将成为我们的副本
- 然后我们将使用实用程序的复制功能从源复制到目标
- 运行代码时,你会看到在面板右侧创建了一个扩展名为 .bak 的重复文件
步骤3) 复制与文件相关的元数据、文件权限和其他信息
复制功能仅复制文件内容,不复制其他信息。要复制 元数据 与文件、文件权限以及您必须使用的其他信息相关”拷贝状态”函数。在运行此代码之前,我们必须删除我们的复制文件“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)最后修改的日期、月份、年份和时间。我们使用路径模块获取文件修改时间详细信息,然后我们将使用 时间类 c 时间函数 将其转换为可读的时间。因此,当我们运行代码时,我们可以看到文件 guru99.txt 的最后修改时间是 8月XNUMX日,星期一th 于13年35:2018。
-
代码行#17-它做同样的事情,提供有关文件修改的信息,但它有不同的格式来表示它。这里我们使用 获取修改时间函数 (path.getmtime(“guru99.txt”))。现在,我们不再使用 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()
总结
- 使用代码创建现有文件的副本 关闭工具.copy(源文件,目标文件)
- 将原始文件的所有信息复制到重复文件,如 文件权限、修改时间或元数据信息 通过使用代码shutil.copystat(src,dst)