📜  如何使用 paramiko 将文件复制到 sftp (1)

📅  最后修改于: 2023-12-03 14:52:00.991000             🧑  作者: Mango

如何使用 paramiko 将文件复制到 sftp

简介

paramiko 是一个用于 SSHv2 协议的 Python 实现,提供了用于远程执行命令、传输文件等功能。SFTP(SSH 文件传输协议)是 paramiko 库提供的一个子模块,用于在远程服务器和本地之间进行文件传输。

本文将介绍如何使用 paramiko 库来将文件复制到 SFTP 服务器。

安装依赖

在使用 paramiko 之前,需要先安装 paramiko 库。可以使用 pip 命令进行安装:

pip install paramiko
导入模块

导入 paramiko 模块和其他需要用到的模块:

import os
import paramiko
连接到 SFTP 服务器

首先,我们需要连接到 SFTP 服务器。使用 paramiko.Transport 类进行连接:

def connect_to_sftp(hostname, port, username, password):
    transport = paramiko.Transport((hostname, port))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    return sftp

参数说明:

  • hostname:SFTP 服务器的主机名或 IP 地址
  • port:SFTP 服务器的端口号,默认为 22
  • username:SFTP 服务器的用户名
  • password:SFTP 服务器的密码
将文件复制到 SFTP 服务器

一旦连接成功,我们就可以将文件复制到 SFTP 服务器了。使用 put 方法将本地文件上传到远程服务器:

def copy_to_sftp(sftp, local_path, remote_path):
    sftp.put(local_path, remote_path)
    print(f"File {local_path} copied to {remote_path}")

参数说明:

  • sftp:连接到 SFTP 服务器的对象
  • local_path:本地文件的路径
  • remote_path:远程服务器上文件的路径
关闭连接

完成文件传输后,记得关闭连接:

def close_connection(sftp):
    sftp.close()
完整示例代码
import os
import paramiko

def connect_to_sftp(hostname, port, username, password):
    transport = paramiko.Transport((hostname, port))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    return sftp

def copy_to_sftp(sftp, local_path, remote_path):
    sftp.put(local_path, remote_path)
    print(f"File {local_path} copied to {remote_path}")

def close_connection(sftp):
    sftp.close()

# 示例用法
sftp = connect_to_sftp('sftp.example.com', 22, 'username', 'password')
copy_to_sftp(sftp, '/local/path/file.txt', '/remote/path/file.txt')
close_connection(sftp)

以上就是使用 paramiko 将文件复制到 SFTP 服务器的介绍。通过这个例子,你可以快速了解如何使用 paramiko 库进行远程文件传输的操作。