转载自https://www.cnblogs.com/zhangchen5/p/16064335.html

1. 找不到文件报错

Traceback (most recent call last):
File "D:\PythonPoject\linuxtool\config\1.py", line 16, in <module>
sftp.put('01-network-manager-all.yaml', '/home/yibai/02-network-manager-all.yaml', print("上传完成!"))
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 757, in put
file_size = os.stat(localpath).st_size
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: '01-network-manager-all.yaml'

这个报错是因为windos的路径不同

报不到文件,如果是window环境的话 需要用 "\\" 来转义,翻了很多帖子说window下 sftp 上传文件只支持绝对路径 , 最后我实验出来是支持 相对路径 的。

OSError: Failure

raise IOError(text)

OSError: Failure 报错是因为我没有写目标路径的文件名字光想着放在路径下面就行了

sftp.put(r'config\01-network-manager-all.yaml', '/home/yibai/', print("上传完成!"))

下面报错

Traceback (most recent call last):
File "D:\PythonPoject\linuxtool\config\1.py", line 16, in <module>
上传完成!
sftp.put(r'config\01-network-manager-all.yaml', '/home/yibai/', print("上传完成!"))
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 759, in put
return self.putfo(fl, remotepath, file_size, callback, confirm)
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 714, in putfo
with self.file(remotepath, "wb") as fr:
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 372, in open
t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 822, in _request
return self._read_response(num)
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 874, in _read_response
self._convert_status(msg)
File "D:\PythonPoject\lib\site-packages\paramiko\sftp_client.py", line 907, in _convert_status
raise IOError(text)
OSError: Failure 进程已结束,退出代码为 1

又去看了一遍官方文档才发现自己没看到

put(localpath, remotepath, callback=None, confirm=True)
将一个本地文件(localpath)复制到SFTP服务器上,作为remotepath。任何由操作引起的异常都会被传递过去。这个方法主要是作为一种方便提供的。 参数。
localpath (str) - 要复制的本地文件
remotepath (str) - SFTP服务器上的目标路径。注意,应该包括文件名。只指定一个目录可能会导致错误。
callback (callable) - 可选的回调函数(形式:func(int, int)),接受到目前为止所传输的字节和要传输的总字节数
confirm (bool) - 事后是否对文件做stat()以确认文件的大小
返回。
一个SFTPAttributes对象,包含关于给定文件的属性

发现其实官方文档已经写出来了 remotepath(str) 必须包括文件名 不要只写 路径 这个文件名你可以随意取可以起到重命名的效果。

put(localpath, remotepath, callback=None, confirm=True)

sftp.put('config\\01.yaml', '/home/yibai/01.yaml', print("上传完成!"))
sftp.put('config\\01.yaml', '/home/yibai/02.yaml', print("上传完成!"))

其实也可以用 r'' 这样就不用转义了

sftp.put(r'config\01.yaml', '/home/yibai/01.yaml', print("上传完成!"))

实例:

import paramiko

transport = paramiko.Transport(("192.168.253.128",22))
transport.connect(username = "root", password = "12345678")
sftp = paramiko.SFTPClient.from_transport(transport)
# 从远程服务器下载文件
# 远程服务器文件路径为/data/paramiko.txt
# sftp.get('/home/yibai/2.txt', '2.txt', print("下载完成!"))
# 从本地上传文件到远程服务器
sftp.put('config\\01.yaml', '/home/yibai/02.yaml', print("上传完成!"))
# 可以对其重命名 ,如果存在文件就覆盖
sftp.put(r'config\01-.yaml', '/home/yibai/02-network.yaml', print("上传完成!"))

也可以使用 os.path.join() 函数对其拼接

sftp.put(os.path.join('D:\\', '22222.txt'), os.path.join('/home/yibai/Desktop', '22222.txt'), print("上传完成!"))
# localpath 代表取D:\\22222.txt remotepath 会变成 Desktop/22222.txt
# 所以remotepath目标路径可以不用 os.path.join()

paramiko 文件传输失败 Sftp put 方法 踩坑点的更多相关文章

  1. SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录

    Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...

  2. 虚拟机出现“操作文件.PhysicalDrive1失败”的解决方法

    今天打算利用U盘给虚拟机装系统做实验,中途遇到了"操作文件.PhysicalDrive1失败"的错误,试了网上的方法都没有成功,最后自己试了很久总算弄出来了.鉴于本人的基础水平有限 ...

  3. Linux中常用文件传输命令及使用方法

    sftp sftp即Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中 ...

  4. 远程文件传输工具sftp、scp、rsync

    一.scp 格式 scp [options] [user@]host : /sourcefile /destpathscp [options] /sourcefile [user@]host:/des ...

  5. SSH-Secure-Shell 3.2.9 build283版本,创建直接打开文件传输的快捷方式的方法

    2019-12-31 16:21:23 版本信息: 在安装目录下新建快捷方式 目标填写:"D:\SSH-Secure-Shell\SshClient.exe" /f 图标选择,系统 ...

  6. C#调用java方法踩坑记

    首先,我的java代码写了一个遗传算法,这是我硕士毕业论文的核心算法,项目是基于C#的web项目.但是现在又不想用C#重写遗传算法代码,于是就想用C#去调用java的代码.在网上找了方法,一般有两种: ...

  7. $_GET方法踩坑

    背景 写代码时,遇到一个奇怪的问题:小程序卡券解码接口老是报解码失败,苦寻了一个小时,发现原来是url参数经过thinkphp的I方法被过滤掉,而且涉及到PHP原生的$_GET 原因 I方法底层是原生 ...

  8. Linux 上的常用文件传输方式介绍与比较

    ftp ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输. FTP 协议允许数据在不同文件系统的主机之间 ...

  9. Linux上常用的文件传输方式以及比较

    tp ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输. FTP 协议允许数据在不同文件系统的主机之间传 ...

  10. 转: Linux 上的常用文件传输方式介绍与比较

    from:  https://www.ibm.com/developerworks/cn/linux/l-cn-filetransfer/ ftp ftp 命令使用文件传输协议(File Transf ...

随机推荐

  1. 只会Jquery,后端程序员如何学会前端(webpack,react,babel,es5,es6)

    写在前 希望通过短暂的学习,可以达到一下目标: 1.能看懂现在前端的工程化手段 2.知道当前前端群体中大致的解决问题的思路 3.当前的问题在哪里,技术发展趋势是什么 4.建立起自己的认知模型 文章内容 ...

  2. shell实现接口初次失败告警,恢复也发送一次通知

    1.该shell判断 第一次失败告警,接口恢复发送一次通知 参数:一个参数接口返回结果0 表示成功 1表示失败 脚本详情 [root@localhost bd]# more bd-new.sh #!/ ...

  3. Java面向对象之什么是多态?

    多态 动态编译:类型:可扩展性 即同一方法可以根据发送对象的不同而采用多种不同的行为方式. 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多. 多态存在的条件: 1.有继承关系,类型转换异 ...

  4. quasar+vue、Input组件绑定两个值

    项目中关于一个只读input绑定两个值,例如input显示取值范围,通过查看vue及quasar文档找出解决方法,如下代码: <q-input v-bind:value="`${det ...

  5. C++数组(二):二维数组

    二维数组 什么是二维数组?二维数组就是在一维数组的基础上增加一个维度. 二维数组的定义方式 数据类型 数组名[行数][列数]; int arr[2][3]; arr[0][0] = 1; arr[0] ...

  6. 发现一个API接口自动化测试平台

    gitee地址:https://gitee.com/season-fan/autometer-api 记录一下: 1.API测试平台的5个需求: ①支持不同的项目,不同的角色,技术人员多人协作 ②支持 ...

  7. js 防抖

    // 防抖 作用:防止重复触发事件 var count = 1; var container = document.getElementById('container'); function getU ...

  8. 【运行报错】Openstack 在部署 Keystone 时出现依赖包报错 (解决安装时依赖包报错问题)

    报错信息 在 安装openstack T版本的时候 keystone时出错: Error: Package: python2-qpid-proton-0.26.0-2.el7.x86_64 (cent ...

  9. 路飞之-后台日志封装-前后端分离的rbac项目演示-全局异常处理封装-封装Response-luffy数据库创建-软件开发模式-User模块用户表-django的配置文件-开启media访问

    目录 路飞之-后台日志封装-前后端分离的rbac项目演示-全局异常处理封装-封装Response-luffy数据库创建-软件开发模式-User模块用户表-django的配置文件-开启media访问 今 ...

  10. 2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比

    超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1Si24R1 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片.工作频 ...