复制文件到 Python:shutil.copy()、shutil.copystat()方法

Python 复制文件方法

Python 提供内置函数,可轻松复制文件 Opera系统 Shell 实用程序。

以下命令用于复制文件

shutil.copy(src,dst)

以下命令用于复制带有元数据信息的文件

shutil.copystat(src,dst)

如何复制文件 Python

以下是复制文件的步骤 Python 使用shutil copy()方法:

步骤1) 捕获当前目录中的原始路径
在复制文件之前,我们需要获取当前目录中原始文件的路径。在代码中 -

  1. 声明变量
  2. 对变量应用拆分函数

复制文件 Python

代码说明

  • 首先,我们要检查“guru99.txt”文件是否存在。由于我们之前已经创建了 guru99.txt 文件,所以我们知道它存在,我们将继续处理代码
  • 我们将文件路径存储在变量“SRC“如果你的文件存在
  • 一旦我们得到路径,我们将分离路径和文件名
  • 为此,我们将使用拆分 path.split 源变量上的函数
  • 代码执行时打印出“文件名“和”文件路径“ 分别地

步骤2) 使用shutil模块创建现有文件的副本
我们使用 Shutil 模块来创建现有文件的副本。这里我们用来创建现有文件“guru99.txt”的副本。

复制文件 Python

代码说明

  • 取原始文件名“guru99.txt”,并在末尾添加字母 .bak“guru99.txt.bak”。这个带有 .bak 扩展名的名称将成为我们的副本
  • 然后我们将使用实用程序的复制功能从源复制到目标
  • 运行代码时,你会看到在面板右侧创建了一个扩展名为 .bak 的重复文件

步骤3) 复制与文件相关的元数据、文件权限和其他信息
复制功能仅复制文件内容,不复制其他信息。要复制 元数据 与文件、文件权限以及您必须使用的其他信息相关”拷贝状态”函数。在运行此代码之前,我们必须删除我们的复制文件“guru99.text.bak”。

复制文件 Python

一旦你删除了文件并运行程序,它将创建你的 .txt 文件的副本,但这次包含以下所有信息: 文件权限、修改时间和元数据信息。您可以进入您的 OS shell 来验证该信息。

复制文件 Python

这是代码

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) 获取信息
您可以获取有关上次修改的文本文件的信息

复制文件 Python

  • 代码行#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)