Parmiko模块读取SFTP文件为生成器返回到内存

项目背景

之前项目中经常使用paramiko模块SFTP下载远端文件到本地,再读取本地文件进行相关操作后入库,最终再删除该本地文件。

思考优化

但是最近开始思考到,其实很多情况下是不需要保留SFTP下载到本地的文件的,只需一次性使用其中的数据而已。

查看了一下paramiko模块的API,paramiko模块中下载数据的方法SFTPClient类有getgetfo两种。前者则是我常用的下载文件到本地的方法,后者是将文件一次读取为数据流再写入到文件对象的方法。但都不符合我的预期要求。

我希望能安全的读取SFTP远端文件的数据对象到内存中使用,便有了这次尝试。既然要安全的读取远端文件,便不能把文件内容一次全部加载到内存,这里就需要考虑使用生成器

代码实现

我的整体测试代码如下,借助sftp的open方法,实现一个按行读取远端大文件的生成器方法。

import paramiko

class SftpTest(object):
    def __init__(self):
        self.host = 'Your sftp host'
        self.port = 22
        self.username = 'Your username'
        self.password = 'Your password'
        self.ssh = None
        self.sftp = None
        self.connect()

    def __get_ssh(self):
        try:
            self.ssh = paramiko.Transport
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值