我需要將資料從FTP服務器發送到S3桶中,而不將檔案保存到我的本地驅動器。在互聯網上,我發現我們可以使用io.BytesIO()作為緩沖器。但是我的代碼失敗了:
error_perm: 500 syntax error, command unrecognized.
腳本:
ftp = ftplib.FTP(ipaddr)
ftp.login(usr,pswd)
ftp.cwd(檔案夾)
myfile = io.BytesIO()
buffer = ftp.retrbinary(filename, myfile.write)
myfile.seek(0)
s3_resource.Object(bucket_name, folder "/"/span> filename).put(Body=buffer)
ftp.quit()
有誰能幫助我嗎?
uj5u.com熱心網友回復:
你的代碼至少有兩個問題:
你的直接問題是,你在Connection.retrbinary呼叫中缺少FTP命令(RETR)。這就是為什么你得到"error_perm: 500 Syntax error, command unrecognized."。它應該是:
ftp.retrbinary("RETR"/span> filename, myfile.write)
一旦你解決了這個問題,你會發現內容不會進入S3,因為你正在將FTP回應(buffer),而不是下載的內容(myfile)傳遞給S3,正如@dreamca4er評論的那樣。它應該是:
s3_resource.Object(bucket_name, folder "/" filename).put(Body=myfile)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/330522.html
標籤:

