用Python复制文件的九种方法("Python实现文件复制的九大技巧详解")

原创
ithorizon 6个月前 (10-20) 阅读数 15 #后端开发

Python实现文件复制的九大技巧详解

一、使用Python内置的 shutil 模块复制文件

使用 shutil 模块的 copy 方法可以轻松地复制文件。以下是示例代码:

import shutil

def copy_file_with_shutil(src, dst):

shutil.copy(src, dst)

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_shutil(source_path, destination_path)

二、使用 os 模块复制文件

使用 os 模块的 copy 方法也可以实现文件复制。以下是示例代码:

import os

def copy_file_with_os(src, dst):

with open(src, 'rb') as fsrc:

with open(dst, 'wb') as fdst:

fdst.write(fsrc.read())

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_os(source_path, destination_path)

三、使用 Python 的读写操作复制文件

通过读取源文件的内容并写入目标文件,可以实现文件复制。以下是示例代码:

def copy_file_with读写(src, dst):

with open(src, 'rb') as fsrc:

with open(dst, 'wb') as fdst:

while True:

chunk = fsrc.read(1024)

if not chunk:

break

fdst.write(chunk)

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with读写(source_path, destination_path)

四、使用 Python 的 mmap 模块复制文件

mmap 模块可以创建内存映射文件,通过映射源文件和目标文件来实现复制。以下是示例代码:

import mmap

def copy_file_with_mmap(src, dst):

with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:

with mmap.mmap(fsrc.fileno(), length=0, access=mmap.ACCESS_READ) as msrc:

with mmap.mmap(fdst.fileno(), length=0, access=mmap.ACCESS_WRITE) as mdst:

mdst.write(msrc.read())

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_mmap(source_path, destination_path)

五、使用 Python 的 sendfile 方法复制文件

sendfile 方法可以在操作系统级别实现文件复制,减成本时间复制效能。以下是示例代码:

import os

import socket

def copy_file_with_sendfile(src, dst):

with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

s.connect(('localhost', 0))

s.sendfile(fsrc, fdst)

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_sendfile(source_path, destination_path)

六、使用 Python 的 tempfile 模块复制文件

tempfile 模块可以创建临时文件,通过临时文件来实现文件复制。以下是示例代码:

import tempfile

def copy_file_with_tempfile(src, dst):

with open(src, 'rb') as fsrc:

with tempfile.NamedTemporaryFile(delete=False) as ftmp:

ftmp.write(fsrc.read())

ftmp.flush()

os.rename(ftmp.name, dst)

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_tempfile(source_path, destination_path)

七、使用 Python 的 subprocess 模块复制文件

subprocess 模块可以调用系统命令实现文件复制。以下是示例代码:

import subprocess

def copy_file_with_subprocess(src, dst):

subprocess.run(['cp', src, dst], check=True)

# 使用示例

source_path = 'source.txt'

destination_path = 'destination.txt'

copy_file_with_subprocess(source_path, destination_path)

八、使用 Python 的 fabric 模块复制文件

fabric 模块是一个用于自动化部署的工具,也可以实现远程文件复制。以下是示例代码:

from fabric import Connection

def copy_file_with_fabric(src, dst, host, port, user):

with Connection(host=host, port=port, user=user) as c:

c.run(f'scp {src} {user}@{host}:{dst}')

# 使用示例

source_path = 'source.txt'

destination_path = '/home/user/destination.txt'

host = 'example.com'

port = 22

user = 'username'

copy_file_with_fabric(source_path, destination_path, host, port, user)

九、使用 Python 的 paramiko 模块复制文件

paramiko 是一个 Python 实现的 SSH2 协议库,可以用于远程文件复制。以下是示例代码:

import paramiko

def copy_file_with_paramiko(src, dst, host, port, user, password):

transport = paramiko.Transport((host, port))

transport.connect(username=user, password=password)

sftp = paramiko.SFTPClient.from_transport(transport)

sftp.put(src, dst)

sftp.close()

transport.close()

# 使用示例

source_path = 'source.txt'

destination_path = '/home/user/destination.txt'

host = 'example.com'

port = 22

user = 'username'

password = 'password'

copy_file_with_paramiko(source_path, destination_path, host, port, user, password)

以上就是使用 Python 实现文件复制的九种方法。不同的方法适用于不同的场景,可以按照实际需求选择合适的方法。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门