geekdoc-python-zh/docs/askpython/copy-a-file-in-python.md

4.0 KiB
Raw Permalink Blame History

用 Python 复制文件

原文:https://www.askpython.com/python/copy-a-file-in-python

在之前的教程中,我们学习了一些 Python 文件操作,比如读取写入删除。让我们在本教程中学习用 Python 复制一个文件。

我们可以在下面提到的模块下使用不同的方法在 Python 中复制一个文件,

  • shutil模块
  • os模块
  • subprocess模块

在本教程中,我们将学习使用上述模块提供的不同方法在 Python 中复制文件。

1.用 Python 复制文件的 shutil 模块

shutil模块提供了一些易于使用的方法,使用这些方法我们可以删除以及复制Python 中的一个文件。让我们看看在这个模块下定义的专门用于复制的不同方法。

1.copyfileobj()

copyfileobj()方法使用各自的文件对象将源文件的内容复制到目标文件。让我们看看下面的代码,

import shutil
src_file_obj=open('src.txt', 'rb')
targ_file_obj= open('targ.txt' , 'wb')
shutil.copyfileobj( src_file_obj , targ_file_obj )

**注意:**文件对象应该指向各自源文件和目标文件的 0 位置(起始位置),以复制全部内容。

2.复制文件()

copyfile()方法使用文件路径将内容从源复制到目标文件。它返回目标文件路径。目标文件路径必须是可写的,否则会发生 OSerror 异常。

import shutil
shutil.copyfile( 'src.txt' , 'targ.txt' )

请记住,该方法只允许使用文件路径,而不允许使用目录。

3.复制()

此方法将源文件复制到目标文件或目标目录。与copyfile()不同,方法copy()允许使用目标目录作为参数,并且还复制文件权限。copy()复制内容后返回目标文件的路径。

import shutil
shutil.copy('/Users/test/file.txt', '/Users/target/')

在目标位置创建一个名为 'file.txt' 的文件,其中所有内容和权限都是从 '/Users/test/file.txt '中复制的。

4.副本 2()

copy2()方法的使用方式与copy()方法完全相同。它们也以同样的方式工作,除了,因为copy2()也从源文件中复制元数据

import shutil
shutil.copy2('/Users/test/file.txt', '/Users/target/')

2.用 Python 复制文件的操作系统模块

1.波本()

方法popen()创建一个到命令 cmd 的管道。该方法返回一个连接到 cmd 管道的文件对象。看看下面的代码,

#for Windows
import os
os.popen('copy src.txt targ.txt' )

#for Linux
import os
os.popen('cp src.txt targ.txt' )

用这种方法,我们不仅可以复制文件,还可以执行其他常规命令。

2.系统()

system()方法直接调用并执行 subshell 中的命令参数。它的返回值取决于运行该程序的操作系统。对于 Linux它是退出状态而对于 Windows它是系统 shell 的返回值。

#for Linux
import os
os.system(' cp src.txt targ.txt' )

#for Windows
import os
os.system(' copy src.txt targ.txt' )

3.用 Python 复制文件的子过程模块

1.调用()

类似于os.system()call()方法直接调用或运行作为参数传递给函数的命令。

# In Linux
import subprocess
subprocess.call('cp source.txt target.txt', shell=True)

# In Windows
import subprocess
subprocess.call('copy source.txt target.txt', shell=True)

参考