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 ...
随机推荐
- Java异常之Error和Exception
异常Exception 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数 ...
- 如何使用新版bing(支持ChatGPT)
就在今天,2023年2月8日,微软正式将ChatGPT引入Bing 搜索引擎迎来新时代 如何体验支持ChatGPT的新版bing? 一.重要说明 请自备TiZi 本文以PC端为例 目前,新版 Bing ...
- xxl-job调度任务简单使用
简介 XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. https://www.cnblogs.com/x ...
- iview、render使用方法
1.<Table size="large" :columns="columns7" :data="labelInput.label" ...
- Java并发编程 —— synchronized关键字
一.是什么?(作用) synchronized关键字解决了多个线程之间访问资源的同步性问题,保证了被其修饰的方法或是代码块在任意时刻只能有一个线程执行. 而在早期的Java版本中,synchroniz ...
- PHP二维数组根据某个元素(key)去重
/** * 二维数组根据key去重复 * @param $arr * @param $key * @return array */ function arrayUniqueness($arr,$key ...
- 使用Libusb和hidapi测试HID设备
一.测试中断或者Bulk传输: 首先要使用Libusb打印出HID设备的Endpoint查看是否支持中断或者Bulk传输模式:如果支持的话才可以进一步测试: 因为HID设备在插入的时候无需安装,并且一 ...
- 【运行报错】Openstack 在部署 Keystone 时出现依赖包报错 (解决安装时依赖包报错问题)
报错信息 在 安装openstack T版本的时候 keystone时出错: Error: Package: python2-qpid-proton-0.26.0-2.el7.x86_64 (cent ...
- react native 中 fetch获取请求头header 的token信息
首先说一句,所有请求,都要带一个token信息,很难受啊,我目前直接将token信息放在global下自定的属性里面.(本地存储Storage和AsyncStorage,取一下,好麻烦) global ...
- java中线程的两种创建方式
第一种:继承java.lang.Thread类.然后重写run方法 例如我们模拟一个龟兔赛跑 1 package edu.aeon.thread; 2 3 /** 4 * 说明:模拟龟兔赛跑 5 * ...