Pythonのstorbinaryを使用した部分アップロード
質問
を使用して画像をダウンロードするためのPythonコードをいくつか書きました
urllib.urlopen().read()
次に、次を使用して FTP サイトにアップロードします。
ftplib.FTP().storbinary()
しかし、問題があります。画像ファイルが部分的にしかアップロードされていない場合があるため、下の 20% 程度が切り取られた画像が取得されることがあります。ローカルにダウンロードしたバージョンを確認したところ、イメージ全体が正常にダウンロードされたため、storbinary に問題があると考えられます。すべてのファイルを正しく開いたり閉じたりしていると思います。storbinary で部分的なアップロードが行われる理由について何か手がかりを持っている人はいますか?
アップデート:Python シェルでコマンドを実行すると、アップロードは正常に完了しますが、スクリプトとして実行した場合と異なる理由がわかりません...
解決 2
このコードを見てからしばらく経ちましたが、問題の核心はダウンロードしたファイルを正しく閉じていなかったことを覚えています。ただし、機能するコードはあるので、ダウンロードではなくアップロードに問題がある場合に備えて、両方のスニペットをここに示します。
画像をダウンロードするための実際のコードは次のとおりです。
socket = urllib.urlopen(TheURL)
FileContents = socket.read()
LocalFilename = LocalDir + FilenameOnly
LocalFile = open(LocalDir + FilenameOnly, 'wb')
LocalFile.write(FileContents)
LocalFile.close()
どこ TheURL
ダウンロードしようとしているファイルの URL です。 FilenameOnly
はパスのファイル名の部分にすぎず、 LocalDir
ローカルの目的地です。 私の問題は、電話をかけなかったことだと思います LocalFile.close()
.
画像をアップロードするための作業コードは次のとおりです。
FTPServer = ftplib.FTP(FTPServer, FTPUsername, FTPPassword)
UploadFile = open(Filename, "rb")
FTPServer.cwd(FTPSubDirectory)
UploadFile.close()
FTPServer.quit()
私が電話をかけなかったことも問題だったのかもしれません FTPServer.quit()
このコードについて質問がある場合は、コメントで喜んで返信します。Google 社員を放置したのは本当に残念です。
他のヒント
ダウンロードしたファイルを正しく閉じていなかったようです。みんな、こんなことはなかったことにしましょう。