原因:服务器在国外
我方:国内
网络问题较大,自己用软件测试(winscp)同样很慢刚开始文件很少,读取目录速度没有那么慢,时间长了,文件变多

第一版代码

class SftpInfo(object):def __init__(self, username, password, timeout=3000):self.username = usernameself.password = passwordself.timeout = timeout# transport和chanelself.t = ''self.chan = ''# 链接失败的重试次数self.try_times = 10# 调用该方法连接远程主机def connect(self):while True:# 连接过程中可能会抛出异常,比如网络不通、链接超时try:self.t = paramiko.Transport(sock=('xxxxxxxxxxx', 22))print(self.username)print(self.password)self.t.connect(username=self.username, password=self.password)# 如果没有抛出异常说明连接成功,直接返回print(u'连接%s成功')return# 这里不对可能的异常如socket.error, socket.timeout细化,直接一网打尽except Exception as e1:if self.try_times != 0:print(u'连接%s失败,进行重试')self.try_times -= 1else:print(u'重试10次失败,结束程序')exit(1)def sftp_upload_file(self, remote_dir, file, filename):# 去掉路径字符穿最后的字符'/',如果有的话remote_filename = remote_dir + '/' + filenamesftp = paramiko.SFTPClient.from_transport(self.t)is_existence = True if filename in sftp.listdir(f'{remote_dir}/') else Falseif not is_existence:sftp.putfo(fl=file, remotepath=remote_filename)return Truedef sftp_download_file(self, remote_file_name, file_name):sftp = paramiko.SFTPClient.from_transport(self.t)# is_existence = True if file_name in sftp.listdir(f'{remote_file_name}/') else False# if is_existence:sftp.get(remote_file_name, file_name)  # 远程路径 本地路径def sftp_mkdir_dir(self, dir_name, purchase_currency_code):sftp = paramiko.SFTPClient.from_transport(self.t)is_existence = True if dir_name in sftp.listdir('T/') else False  # 哦按段if not is_existence:sftp.mkdir(path=f'/{dir_name}')return f'T/{dir_name}'# 断开连接def close(self):self.t.close()print('stfp--------------------->断开连接')

我这里使用的是 sftp.putfo 我这边是数据流可以更换自己想要的哈
时间测试在5分钟内可以上传完

第二版
修改这个方法

def sftp_mkdir_dir(self, dir_name, purchase_currency_code):sftp = paramiko.SFTPClient.from_transport(self.t)# is_existence = True if dir_name in sftp.listdir('T/') else False  # 哦按段# if not is_existence:try:sftp.mkdir(path=f'/{dir_name}')except Exception as  e:# 如果存在了会报错已经存在 这个错误pass处理掉print(e)return f'T/{dir_name}'

时间测试在1分钟内可以上传完
原因:文件目录越多,打开这个目录下的文件越慢,底层需要循环遍历,判断这个文件名是否已经存在

在别人服务器执行的是命令,可以直接执行创建命令,不遍历目录

Python sftp上传文件 速度过慢相关推荐

  1. rz后远程服务器没反应,“通过jumpserver远程登录linux服务器,rz上传文件速度过慢”问题的解决...

    问题: windows通过jumpserver远程登录到linux服务器,使用rz上传jar包,速度太慢(10k以内). 解决方案: 思路:通过ssh直接登录远程服务器 1.secureCRT-> ...

  2. C# SFTP上传文件

    最近工作中用到一个SFTP上传文件的功能,因为客户端是C#做的就搜索了一些C#SFTP资料,发现网上除了一篇博客外还没有一篇系列完整的整理文档,就整理了下,希望大家多提建议,共同提高. sftp是Se ...

  3. 【便签纸】记录一次Linux服务器上通过sftp上传文件时的错误

    背景:在Linux服务器上,通过sftp上传文件到远程服务器. 首先,需要登录远程服务器,格式是: sftp [服务器名]@[服务器地址] 然后,需要输入服务器密码: [服务器名]@[服务器地址]'s ...

  4. java ssh 服务器文件传输_java使用SFTP上传文件到资源服务器

    本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: package cn.test.util; ...

  5. SecureCRT sftp上传文件报错:put: failed to upload xxx 拒绝访问

    1.问题 使用sftp上传文件时报错:put: failed to upload xxx 拒绝访问.类似下图所示: 2.原因 造成这个问题的原因可能有两个,一是要上到的那个目录剩余磁盘空间不足,二是打 ...

  6. sftp上传文件和下载文件

    sftp上传文件和下载文件 在SecrueCRT中使用stfp命令 sftp中的常用命令 pwd lpwd ls lls put-上传文件到服务器 get-下载文件到本地 在SecrueCRT中使用s ...

  7. java使用sftp上传(文件)图片到服务器中

    最近租了一个服务器,想着上线个小项目,结果图片上传卡壳了,自从11号看了一篇文章就入了ftp的坑.研究了十多个小时的ftp文件传输,无果.睡前看到了一篇关于sftp上传文件的文章,抱着试一试的心态,结 ...

  8. mac使用sftp上传文件夹

    mac使用sftp上传文件夹 合并分卷文件 1.mac使用sftp上传文件夹 2.拆分.合并分卷文件 3.校验文件md5码 1.mac使用sftp上传文件夹 在win中有很多好用的ftp工具,但是在m ...

  9. Python请求上传文件接口

    Python 请求上传文件接口 def post_multipart_request():params = {"key1": "value1", "k ...

最新文章

  1. Java技术——Iterator和Enumeration的不同
  2. hamap java_一篇文章,让你真正了解Java
  3. Jquery Types 小结
  4. keepalived详解 结合lvs
  5. STM32 中malloc实际调用
  6. php自动运维,运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(五)
  7. AtCoder Beginner Contest 177总结
  8. Simulink之功率场效应晶体管(P-MOSFET)
  9. Django中类视图的几实现方式
  10. “携号转网”正式试运行,这两个原因或致无法转网
  11. 转:Android ViewPager多页面滑动切换以及动画效果
  12. 多线程程序设计学习(1)之多线程程序的评量标准
  13. liux环境下配置jdk
  14. 生活随记 - 2020国庆第一天
  15. 分布式机器学习——入门篇
  16. 高级前端工程师知识图谱
  17. 张正友标定法matlab,张正友标定法(相机标定)
  18. Remember this!
  19. 游戏开发中的贝塞尔曲线
  20. 硬件模拟大师_用机器人做咖啡,“智咖大师”这样升级新零售

热门文章

  1. sonic-ios-bridge(sib)使用
  2. 世界排名前十位的奢侈品
  3. linux设定默认网卡,linux初始化配置网卡
  4. Caused by: java.lang.IllegalArgumentException: maxActive can‘t not set zero
  5. 微服务架构 | 服务注册发现中心/配置中心/消息总线 - [nacos]
  6. 使用springboot和vue搭建项目
  7. vim 修改后退出命令
  8. 百度分享插件,可分享到QQ,微信,微博…
  9. 分享3个好用到爆的Python模块,点赞收藏
  10. excel中输入身份证号不能够完整显示的解决