python读取ftp文件入库_从FTP python读取缓冲区中的文件

请确保先登录到ftp服务器。之后,使用retrbinary以二进制模式提取文件。它对文件的每个块使用回调。你可以用这个把它加载到一个字符串中。from ftplib import FTP

ftp = FTP('ftp.ncbi.nlm.nih.gov')

ftp.login() # Username: anonymous password: anonymous@

# Setup a cheap way to catch the data (could use StringIO too)

data = []

def handle_binary(more_data):

data.append(more_data)

resp = ftp.retrbinary("RETR pub/pmc/PMC-ids.csv.gz", callback=handle_binary)

data = "".join(data)

额外的一点:我们在解压字符串的时候如何?

简单模式,使用上面的数据字符串import gzip

import StringIO

zippy = gzip.GzipFile(fileobj=StringIO.StringIO(data))

uncompressed_data = zippy.read()

稍好一点,全套解决方案:from ftplib import FTP

import gzip

import StringIO

ftp = FTP('ftp.ncbi.nlm.nih.gov')

ftp.login() # Username: anonymous password: anonymous@

sio = StringIO.StringIO()

def handle_binary(more_data):

sio.write(more_data)

resp = ftp.retrbinary("RETR pub/pmc/PMC-ids.csv.gz", callback=handle_binary)

sio.seek(0) # Go back to the start

zippy = gzip.GzipFile(fileobj=sio)

uncompressed = zippy.read()

实际上,动态解压缩会好得多,但我看不到使用内置库实现这一点的方法(至少不容易做到)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值