以下は、ftp 経由でダウンロードするために使用するコードの一部です。ダウンロードを停止してから続行するか、後で再ダウンロードしようとしていました。ftp.abort() を試しましたが、ハングしてタイムアウトを返すだけです。
ftplib.error_proto: 421 Data timeout. Reconnect. Sorry.
シナリオ: シナリオは、ユーザーがダウンロードするファイルを選択し、ダウンロード中にユーザーが現在のダウンロードを停止して新しいファイルをダウンロードできるというものです。コード 'if os.path.getsize(self.file_path) >117625:' は、ユーザーがダウンロードを停止した場合の単なる例です。ファイルのフルサイズではありません。
ありがとう。
from ftplib import FTP
class ftpness:
def __init__(self):
self.connect(myhost, myusername, mypassword)
def handleDownload(self,block):
self.f.write(block)
if os.path.getsize(self.file_path) >117625:
self.ftp.abort()
def connect(self,host, username, password):
self.ftp = FTP(host)
self.ftp.login(username, password)
self.get(self.file_path)
def get(self,filename):
self.f = open(filename, 'wb')
self.ftp.retrbinary('RETR ' + filename, self.handleDownload)
self.f.close()
self.ftp.close
a = ftpness()