您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从FTP python读取缓冲区中的文件

从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)

优点:如何在使用字符串时解@R_419_1717@?

简易模式,使用上面的数据字符串

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()

实际上,即时进行解压缩会更好,但是我看不到使用内置库实现压缩的方法(至少不容易)。

python 2022/1/1 18:33:25 有208人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶