1

を使用して画像をダウンロードするためのPythonコードをいくつか作成しました

urllib.urlopen().read()

を使用して FTP サイトにアップロードします。

ftplib.FTP().storbinary()

しかし、私は問題を抱えています。画像ファイルが部分的にしかアップロードされない場合があるため、下の 20% 程度が切り取られた画像が取得されます。ローカルにダウンロードしたバージョンを確認したところ、イメージ全体を正常にダウンロードできたので、storbinary に問題があると思われます。すべてのファイルを正しく開閉していると思います。storbinary で部分的なアップロードが行われる理由について、何か手がかりはありますか?

更新: Python シェルでコマンドを実行すると、アップロードが正常に完了します。スクリプトとして実行した場合と異なる理由がわかりません...

4

2 に答える 2

0

ダウンロードしたファイルを正しく閉じていなかったことがわかりました。これは決して起こらなかったことにしましょう。

于 2009-03-22T04:52:53.360 に答える
0

このコードを見てからしばらく経ちましたが、その核心は、ダウンロードしたファイルを正しく閉じていなかったことを覚えています。ただし、動作するコードはあるので、ダウンロードではなくアップロードに問題がある場合に備えて、両方のスニペットを次に示します。

画像をダウンロードするための作業コードは次のとおりです。

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 社員をぶら下げたままにしておくのは本当に残念です。

于 2011-01-03T23:47:05.230 に答える