广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python通过sftp远程传输文件
  • 647
分享到

python通过sftp远程传输文件

传输文件pythonsftp 2023-01-31 05:01:19 647人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python提供了一个第三方模块paramiko,通过这个模块可以实现两台机器之间的网络连接,sftp是paramiko的一个方法,使用sftp可以在两台机器之间互相传输拷贝文件。然而paramiko的sftp只能拷贝文件,

       python提供了一个第三方模块paramiko,通过这个模块可以实现两台机器之间的网络连接,sftp是paramiko的一个方法,使用sftp可以在两台机器之间互相传输拷贝文件。然而paramiko的sftp只能拷贝文件,不能拷贝文件夹。要实现文件夹的拷贝,可以这样子思考:使用深度搜索遍历源目录,若是文件,直接拷贝到目的目录;若是文件夹,则先在目的目录建立一个子目录,然后遍历子目录...使用递归函数,可以达到完全拷贝目录的目的。实现代码如下:
import paramiko
#建立连接,获取sftp句柄
def sftp_connect(username,passWord,host,port=22):
    client = None
    sftp = None
    try:
        client = paramiko.Transport((host,port))
    except Exception as error:
        print error
    else:
        try:
            client.connect(username=username, password=password)
        except Exception as error:
            print error
        else:
            sftp = paramiko.SFTPClient.from_transport(client)
    return client,sftp
#断开连接
def disconnect(client):
    try:
        client.close()
    except Exception as error:
        print error
import os
import sys
from stat import S_ISDIR as isdir

def _check_local(local):
    if not os.path.exists(local):
        try:
            os.mkdir(local)
        except IOError as err:
            print err

def get(sftp,remote,local):
    #检查远程文件是否存在
    try:
        result = sftp.stat(remote)
    except IOError as err:
        error = '[ERROR %s] %s: %s' %(err.errno,os.path.basename(os.path.nORMpath(remote)),err.strerror)
        print error
    else:
        #判断远程文件是否为目录
        if isdir(result.st_mode):
            dirname = os.path.basename(os.path.normpath(remote))
            local = os.path.join(local,dirname)
            _check_local(local)
            for file in sftp.listdir(remote):
                sub_remote = os.path.join(remote,file)
                sub_remote = sub_remote.replace('\\','/')
                get(sftp,sub_remote,local)
        else:   
        #拷贝文件
            if os.path.isdir(local):
                local = os.path.join(local,os.path.basename(remote))
            try:
                sftp.get(remote,local)
            except IOError as err:
                print err
            else:
                print '[get]',local,'<==',remote
import os

def put(sftp,local,remote):
    #检查路径是否存在
    def _is_exists(path,function):
        path = path.replace('\\','/')
        try:
            function(path)
        except Exception as error:
            return False
        else:
            return True
    #拷贝文件
    def _copy(sftp,local,remote):
        #判断remote是否是目录
        if _is_exists(remote,function=sftp.chdir):
            #是,获取local路径中的最后一个文件名拼接到remote中
            filename = os.path.basename(os.path.normpath(local))
            remote = os.path.join(remote,filename).replace('\\','/')
        #如果local为目录
        if os.path.isdir(local):
            #在远程创建相应的目录
            _is_exists(remote,function=sftp.mkdir)
            #遍历local
            for file in os.listdir(local):
                #取得file的全路径
                localfile = os.path.join(local,file).replace('\\','/')
                #深度递归_copy()
                _copy(sftp=sftp,local=localfile,remote=remote)
        #如果local为文件
        if os.path.isfile(local):
            try:
                sftp.put(local,remote)
            except Exception as error:
                print error
                print '[put]',local,'==>',remote,'FaiLED'
            else:
                print '[put]',local,'==>',remote,'SUCCESSED'
    #检查local
    if not _is_exists(local,function=os.stat):
        print "'"+local+"': No such file or directory in local"
        return False
    #检查remote的父目录
    remote_parent =  os.path.dirname(os.path.normpath(remote))
    if not _is_exists(remote_parent,function=sftp.chdir):
        print "'"+remote+"': No such file or directory in remote"
        return False
    #拷贝文件
    _copy(sftp=sftp,local=local,remote=remote)

--结束END--

本文标题: python通过sftp远程传输文件

本文链接: https://www.lsjlt.com/news/189073.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python通过sftp远程传输文件
    python提供了一个第三方模块paramiko,通过这个模块可以实现两台机器之间的网络连接,sftp是paramiko的一个方法,使用sftp可以在两台机器之间互相传输拷贝文件。然而paramiko的sftp只能拷贝文件,...
    99+
    2023-01-31
    传输文件 python sftp
  • Shell脚本实现SFTP传输文件,通过密码形式
    文章目录 读取SFTP连接信息 读取SFTP连接信息 cat 读取文件内容 grep server : 查找文件内容中包含server字符的,行内容 awk -F ‘=’ :实现字符...
    99+
    2023-10-07
    服务器 linux 网络
  • 不需要远程传输文件Linux关闭scp和sftp命令的方法
    这篇文章主要介绍“不需要远程传输文件Linux关闭scp和sftp命令的方法”,在日常操作中,相信很多人在不需要远程传输文件Linux关闭scp和sftp命令的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-13
  • 通过ssh 与远程服务器之间传输文件的几种方法
    通过SSH与远程服务器之间传输文件有以下几种方法:1. 使用scp命令:scp命令可以在本地和远程服务器之间进行文件传输。例如,将本...
    99+
    2023-09-12
    ssh
  • Python Paramiko上传下载sftp文件及远程执行命令详解
    目录一、简介安装模块二、上传文件三、下载文件四、远程执行命令五、错误集锦原因解决一、简介 Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件...
    99+
    2022-11-11
  • 如何通过JAVA NIO通道传输拷贝文件
    这篇文章给大家分享的是有关如何通过JAVA NIO通道传输拷贝文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过JAVA NIO 通道传输拷贝文件方式一   public&nbs...
    99+
    2023-06-17
  • Python Paramiko实现sftp文件上传下载以及远程执行命令
    Paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令、文件传输等功能。 安装模块默认Python没有自带,需要手动安装:pip3 install paramiko#!/usr/...
    99+
    2023-01-31
    上传下载 命令 文件
  • PHP 和 JavaScript:如何通过文件传输数据?
    PHP 和 JavaScript 是两种常用的编程语言,它们能够实现各种各样的功能。本文将介绍如何通过文件传输数据,让 PHP 和 JavaScript 之间进行数据交互。 一、通过 PHP 上传文件 在 PHP 中,使用 $_FILES...
    99+
    2023-07-02
    spring 文件 javascript
  • python如何通过http上传文件
    这篇文章主要介绍“python如何通过http上传文件”,在日常操作中,相信很多人在python如何通过http上传文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python如何通过http上传文件”的疑...
    99+
    2023-06-20
  • 如何通过阿里云服务器传输文件
    通过阿里云服务器传输文件是一种常见的网络操作,无论是企业还是个人,都需要经常进行文件传输。本文将详细介绍如何通过阿里云服务器传输文件。 一、什么是阿里云服务器阿里云服务器是阿里云提供的一种虚拟化计算服务,能够为用户提供弹性扩展的计算能力,满...
    99+
    2023-11-13
    阿里 传输文件 服务器
  • Android通过BLE传输文件遇到问题解决
    目录1、遇到的问题2、 能不能通过BLE传输文件3、 如何传输文件4、如何保证可靠性和稳定性1、超时重传2、序列号3、数据校验5、 传输速度提升 RequestMtu1、遇到的问题 ...
    99+
    2023-05-18
    Android BLE传输文件 Android BLE
  • linux通过跳板机连接远程服务器并进行文件传输的方法
    最近在linux主机上部署环境时,遇到了很多问题,第一个就是通过跳板机远程连接服务器传输文件的问题。 看了很多网上的解决办法,大部分就是说用SecureCRT软件的Alt+P命令,然后通过SFTP进行传输,其中主要涉及以...
    99+
    2022-06-04
    linux连接远程服务器 linux文件传输 linux跳板机连接远程服务器
  • NetCat怎么实现远程文件传输
    这篇文章主要介绍“NetCat怎么实现远程文件传输”,在日常操作中,相信很多人在NetCat怎么实现远程文件传输问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”NetCat怎么实现远程文件传输”的疑惑有所帮助!...
    99+
    2023-06-29
  • win8远程桌面连接传输文件(与本地磁盘进行文件传输)
      win7和win8中链接远程桌面相信大家都会用,但是你知道如何在用远程桌面与本地磁盘进行文件传输吗   其实很简单,win7中:启动远程桌面: 开始—程序—附件—远程...
    99+
    2022-06-04
    磁盘 与本 文件传输
  • 通过FileZilla实现window10与Ubuntu之间的文件传输
    文章目录 1、开启 Ubuntu下的 FTP服务2、下载FileZilla3.FileZilla软件设置 1、开启 Ubuntu下的 FTP服务 (1)打开 Ubuntu的终端窗口,然...
    99+
    2023-10-21
    ubuntu 服务器 linux
  • python通过http上传文件思路详解
    这里主要是解决multipart/form-data这种格式的文件上传,基本现在http协议上传文件基本上都是通过这种格式上传 1 思路 一般情况下,如果我们往一个地址上传文件,则必...
    99+
    2022-11-12
  • 如何在Java中通过二维码实现文件传输?
    二维码作为一种二维条码,近年来得到了广泛的应用。它不仅可以用于扫码支付、快递单号等场景,还可以用于文件传输。在本文中,我们将介绍如何在Java中通过二维码实现文件传输。 二维码的生成 在Java中,我们可以使用ZXing库来生成二维码...
    99+
    2023-06-24
    文件 二维码 shell
  • windows远程桌面连接如何传输文件
    这篇“windows远程桌面连接如何传输文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows远程桌面连接如何传输...
    99+
    2023-06-30
  • python通过SSH获取远端主机文件
    easy_install.exe sshimport ssh client = ssh.SSHClient() client.set_missing_host_key_policy(ssh.AutoAddPolicy()) client.c...
    99+
    2023-01-31
    远端 主机 文件
  • 怎么在ajax中通过调用springboot框架api传输文件
    今天就跟大家聊聊有关怎么在ajax中通过调用springboot框架api传输文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是前台页面的代码<!DOCTYPE ...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作