代码加入SFTP Python ---(小白篇4)

在 Python 中,可以使用 pysftpparamiko 来接入 SFTP 服务并执行文件上传、下载和目录操作。以下是使用两种库的示例代码。


1.服务器上加入SFTP------(小白篇 1)

2.加入SFTP 用户------(小白篇 2)

3.代码加入SFTP JAVA —(小白篇3)

4.代码加入SFTP Python —(小白篇4

5.代码加入SFTP Go —(小白篇5)

1. 安装依赖

安装 paramikopysftp

pip install paramiko pysftp

2. 使用 Paramiko

示例代码
import paramiko

# SFTP 服务器信息
SFTP_HOST = "your-server-ip"
SFTP_PORT = 22
SFTP_USER = "newuser"
SFTP_PASSWORD = "yourpassword"

def sftp_operations():
    try:
        # 创建 SSH 客户端
        transport = paramiko.Transport((SFTP_HOST, SFTP_PORT))
        transport.connect(username=SFTP_USER, password=SFTP_PASSWORD)

        # 打开 SFTP 会话
        sftp = paramiko.SFTPClient.from_transport(transport)

        # 上传文件
        local_file = "C:/path/to/local/file.txt"
        remote_file = "/uploads/file.txt"
        sftp.put(local_file, remote_file)
        print(f"Uploaded {
      
      local_file} to {
      
      remote_file}")

        # 下载文件
        download_file = "C:/path/to/download/file.txt"
        sftp.get(remote_file, download_file)
        print(f"Downloaded {
      
      remote_file} to {
      
      download_file}")

        # 列出远程目录
        directory = "/uploads"
        files = sftp.listdir(directory)
        print(f"Files in {
      
      directory}: {
      
      files}")

        # 关闭连接
        sftp.close()
        transport.close()
        print("SFTP connection closed.")
    except Exception as e:
        print(f"An error occurred: {
      
      e}")

if __name__ == "__main__":
    sftp_operations()
代码说明
  1. 连接服务器: 使用 paramiko.Transport 建立连接。
  2. 上传文件: 使用 sftp.put() 方法将本地文件上传到服务器。
  3. 下载文件: 使用 sftp.get() 方法从服务器下载文件。
  4. 列出目录内容: 使用 sftp.listdir() 方法列出目录中的文件。

3. 使用 pysftp

示例代码
import pysftp

# SFTP 服务器信息
SFTP_HOST = "your-server-ip"
SFTP_USER = "newuser"
SFTP_PASSWORD = "yourpassword"

# 配置 SFTP 连接选项
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None  # 忽略主机密钥检查(生产环境应提供主机密钥)

def sftp_operations():
    try:
        # 建立连接
        with pysftp.Connection(host=SFTP_HOST, username=SFTP_USER, password=SFTP_PASSWORD, cnopts=cnopts) as sftp:
            print("SFTP connection established.")

            # 上传文件
            local_file = "C:/path/to/local/file.txt"
            remote_file = "/uploads/file.txt"
            sftp.put(local_file, remote_file)
            print(f"Uploaded {
      
      local_file} to {
      
      remote_file}")

            # 下载文件
            download_file = "C:/path/to/download/file.txt"
            sftp.get(remote_file, download_file)
            print(f"Downloaded {
      
      remote_file} to {
      
      download_file}")

            # 列出远程目录
            directory = "/uploads"
            files = sftp.listdir(directory)
            print(f"Files in {
      
      directory}: {
      
      files}")
    except Exception as e:
        print(f"An error occurred: {
      
      e}")

if __name__ == "__main__":
    sftp_operations()
代码说明
  1. 连接服务器: 使用 pysftp.Connection 建立连接。
  2. 上传文件: 使用 sftp.put() 上传文件。
  3. 下载文件: 使用 sftp.get() 下载文件。
  4. 忽略主机密钥检查: cnopts.hostkeys = None 用于开发和测试环境,生产环境请提供主机密钥。

4. 对比 Paramiko 和 pysftp

功能 Paramiko pysftp
易用性 配置较复杂,功能灵活 简单易用,适合基本文件操作
主机密钥管理 手动配置 自动处理(可禁用)
适用场景 高级需求,如自定义 SSH 会话 基本 SFTP 文件操作

5. 测试代码

  • SFTP_HOSTSFTP_USERSFTP_PASSWORD 替换为实际的服务器信息。
  • 修改文件路径以匹配本地和远程文件。

6. 注意事项

  • 权限: 确保服务器上的 SFTP 用户有相应的目录权限。
  • 主机密钥: 生产环境中建议提供主机密钥 (~/.ssh/known_hosts) 而不是忽略密钥检查。
  • 防火墙: 确保服务器开放端口 22。

根据需求选择合适的库来完成 SFTP 操作!

猜你喜欢

转载自blog.csdn.net/leader_song/article/details/144653421
今日推荐