paramiko 文件传输失败 Sftp put 方法 踩坑点
转载自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 方法 踩坑点的更多相关文章
- SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
		
Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...
 - 虚拟机出现“操作文件.PhysicalDrive1失败”的解决方法
		
今天打算利用U盘给虚拟机装系统做实验,中途遇到了"操作文件.PhysicalDrive1失败"的错误,试了网上的方法都没有成功,最后自己试了很久总算弄出来了.鉴于本人的基础水平有限 ...
 - Linux中常用文件传输命令及使用方法
		
sftp sftp即Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等敏感信息进行加密,因此可以有效的防止用户信息在传输的过程中 ...
 - 远程文件传输工具sftp、scp、rsync
		
一.scp 格式 scp [options] [user@]host : /sourcefile /destpathscp [options] /sourcefile [user@]host:/des ...
 - SSH-Secure-Shell 3.2.9 build283版本,创建直接打开文件传输的快捷方式的方法
		
2019-12-31 16:21:23 版本信息: 在安装目录下新建快捷方式 目标填写:"D:\SSH-Secure-Shell\SshClient.exe" /f 图标选择,系统 ...
 - C#调用java方法踩坑记
		
首先,我的java代码写了一个遗传算法,这是我硕士毕业论文的核心算法,项目是基于C#的web项目.但是现在又不想用C#重写遗传算法代码,于是就想用C#去调用java的代码.在网上找了方法,一般有两种: ...
 - $_GET方法踩坑
		
背景 写代码时,遇到一个奇怪的问题:小程序卡券解码接口老是报解码失败,苦寻了一个小时,发现原来是url参数经过thinkphp的I方法被过滤掉,而且涉及到PHP原生的$_GET 原因 I方法底层是原生 ...
 - Linux 上的常用文件传输方式介绍与比较
		
ftp ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输. FTP 协议允许数据在不同文件系统的主机之间 ...
 - Linux上常用的文件传输方式以及比较
		
tp ftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输. FTP 协议允许数据在不同文件系统的主机之间传 ...
 - 转: Linux 上的常用文件传输方式介绍与比较
		
from: https://www.ibm.com/developerworks/cn/linux/l-cn-filetransfer/ ftp ftp 命令使用文件传输协议(File Transf ...
 
随机推荐
- Word16 供应链的管理论文office真题
			
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...
 - 20192326杨沥凯 实验一《Linux基础与Java开发环境》实验报告
			
20192326杨沥凯 2020-2021-1 <数据结构与面向对象程序设计>实验一报告 课程:<程序设计与数据结构> 班级: 1923 姓名: 杨沥凯 学号:20192326 ...
 - Appium元素选择 滑动 通知栏
			
一.根据ID 包名可省略 1.元素的resource id属性 2.唯一标志该元素的值 3.一般最优先根据它来定位 driver.find_element_by_id('io.manong.deve ...
 - SpringMVC学习笔记【狂神说】
			
1.MVC是什么 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织代码. MVC主要作用是降低了视图与 ...
 - maven打包springboot项目不能运行的解决办法
			
前提是在开发工具中能正常运行,maven打包后无法运行. 打包后,进入打包文件路径 在dos下输出 java -version 显示jdk版本后,再 java -jar xxxx.jar xxx ...
 - js判断任意数值接近数组中的某个值
			
可以是数组,也可以是数组对象,看需求定义 let val = '' for (let i = 0; i < this.allData.length; i++) { if (this.days & ...
 - 人脸识别:face_recognition初尝试
			
在学习face_recognition之前先看git上的另一个项目:face_collection .face_collection某种程度上可以看做是demo,便于我们更好的理解和使用face_re ...
 - 浅谈spark
			
spark spark是一个开源分布式计算框架,在于让计算更加快速,通常使用资源调度器yarn和spark自带的资源调度器standalond进行调度,spark相对于Hadoop更加快速,基于它是内 ...
 - Server2008通过bat命令自动定时备份MySQL数据库
			
第一种方法: 环境: MySQL 安装位置:D:\MySQL 论坛数据库名称为:Db_Test 数据库备份目的地:D:\db_bak\ 1.首先新建一个bat文件 rem ************** ...
 - Si24R2F+ 无线发射芯片的主要特性及应用介绍
			
Si24R2F+ 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式发射基带的无线发射芯片.工作频率范围为 2400MHz-2525MHz,共有 126 个 1MHz 带宽的 ...