2
ディスクに書き込まずに、FTPサーバーからs3のバケットにフォルダの内容を転送しようとしています。現在、s3はフォルダ内のすべてのファイル名を取得していますが、実際のデータは取得していません。フォルダ内の各ファイルはわずか数バイトです。なぜファイル全体をアップロードしていないのか分かりません。トラブル:Pythonを使用してストリーム経由でFTPサーバーから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()
ファイル全体が確実にアップロードされるようにする方法はありますか?