使用Python通过流将数据从FTP服务器传输到S3时出现问题

2024-06-06 19:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望将文件夹的内容从ftp服务器传输到s3中的bucket,而无需写入磁盘。目前,s3获取文件夹中所有文件的名称,但没有实际数据。文件夹中的每个文件只有几个字节。我不太清楚为什么不上传整个文件。在

from ftplib import FTP
import io 
import boto3


s3= boto3.resource('s3')

ftp = FTP('ftp.ncbi.nlm.nih.gov')
ftp.login()
ftp.cwd('pubchem/RDF/descriptor/compound')

address =  'ftp.ncbi.nlm.nih.gov/pubchem/RDF/descriptor/compound/'

filelist = ftp.nlst()

for x in range(0, len(filelist)-1):
    myfile = io.BytesIO()
    filename = 'RETR ' + filelist[x]
    resp = ftp.retrbinary(filename, myfile.write)
    myfile.seek(0)
    path = address + filelist[x]
    #putting file on s3
    s3.Object(s3bucketname, path).put(Body = resp)


ftp.quit()

有没有办法确保整个文件都上传了?在


Tags: 文件ioimport文件夹s3ftpncbinlm
1条回答
网友
1楼 · 发布于 2024-06-06 19:34:09

我也遇到了同样的问题,当我更改.put()从保存文件的位置读取实际文件时,它就开始工作了。因此,在这种情况下,您不直接处理resp

s3.Object(s3Bucketname, filename).put(Body=open(filename, 'rb'))

相关问题 更多 >