【发布时间】:2016-12-15 19:20:43
【问题描述】:
我希望将文件夹的内容从 ftp 服务器传输到 s3 中的存储桶,而不写入磁盘。目前,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()
有什么方法可以确保整个文件都上传了吗?
【问题讨论】: