Python使用paramiko通过SFTP实现文件上传与下载

青禾
青禾
发布时间:2026-10-14| 5人浏览过
原创

本文介绍如何利用Python的paramiko模块,通过SFTP协议实现远程主机的文件与目录上传及下载功能。代码涵盖单文件、批量目录传输逻辑,包含路径类型判断、异常处理及本地远程路径一致性校验,适用于Windows与Linux环境下的自动化运维场景。

在Python开发中,借助paramiko库提供的SFTP功能,可以便捷地登录远程主机,从而完成文件的上传与下载操作。

1.功能实现

实现逻辑主要包含以下几点: 1、依据输入参数判断目标为文件还是目录,分别执行上传或下载操作。 2、本地路径参数local与远程路径参数remote的类型必须保持一致:若为文件,路径以文件名结尾;若为目录,路径以反斜杠\结尾。 3、执行操作前,需确保本地目录与远程目录均已存在。 4、代码中包含完整的异常捕获机制,以处理可能的传输错误。

2.代码实现


#!/usr/bin/python
# coding=utf-8

import paramiko
import os

def sftp_upload(host,port,username,password,local,remote):
    sf = paramiko.Transport((host,port))
    sf.connect(username = username,password = password)
    sftp = paramiko.SFTPClient.from_transport(sf)
    try:
        if os.path.isdir(local):#判断本地参数是目录还是文件
            for f in os.listdir(local):#遍历本地目录
                sftp.put(os.path.join(local+f),os.path.join(remote+f))#上传目录中的文件
        else:
            sftp.put(local,remote)#上传文件
    except Exception,e:
        print('upload exception:',e)
    sf.close()

def sftp_download(host,port,username,password,local,remote):
    sf = paramiko.Transport((host,port))
    sf.connect(username = username,password = password)
    sftp = paramiko.SFTPClient.from_transport(sf)
    try:
        if os.path.isdir(local):#判断本地参数是目录还是文件
            for f in sftp.listdir(remote):#遍历远程目录
                 sftp.get(os.path.join(remote+f),os.path.join(local+f))#下载目录中文件
        else:
            sftp.get(remote,local)#下载文件
    except Exception,e:
        print('download exception:',e)
    sf.close()

if __name__ == '__main__':
    host = '192.168.1.2'#主机
    port = 22 #端口
    username = 'root' #用户名
    password = '123456' #密码
    local = 'F:\\sftptest\\'#本地文件或目录,与远程一致,当前为windows目录格式,window目录中间需要使用双斜线
    remote = '/opt/tianpy5/python/test/'#远程文件或目录,与本地一致,当前为linux目录格式
    sftp_upload(host,port,username,password,local,remote)#上传
    #sftp_download(host,port,username,password,local,remote)#下载

3.总结

上述代码实现了文件及目录的上传与下载功能,支持单独传输单个文件,也支持批量传输目录下的所有文件,基本满足了日常使用需求。不过,针对目录不存在时自动创建的情况,以及向多台主机同时上传下载的场景,代码仍有待进一步完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。