Python 2.7 を使用して FTP からファイルをダウンロードしようとしています。Windows XP の場合
FTPに接続できますが、次のエラーが発生します
[Errno 10054] 既存の接続がリモート ホストによって強制的に閉じられました
以下は私のコードです。
import os
from time import strftime
from ftplib import FTP
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
def ftp_connect(path):
link = FTP(host = 'myservername', timeout = 5) #Keep low timeout
link.login(passwd = 'mypassword', user = 'myusername')
debug("%s - Connected to FTP" % strftime("%d-%m-%Y %H.%M"))
link.cwd(path)
return link
def writeline(line):
file.write(line + "\n")
downloaded = open('myfile.txtx', 'wb')
def debug(txt):
print txt
path="mydir"
filename="myfilename"
link = ftp_connect(path)
file_size = link.size(filename)
max_attempts = 5 #I dont want death loops.
while file_size != downloaded.tell():
try:
debug("%s while > try, run retrbinary\n" % strftime("%d-%m-%Y %H.%M"))
if downloaded.tell() != 0:
link.retrbinary('RETR ' + filename, downloaded.write, downloaded.tell())
else:
link.retrbinary('RETR ' + filename, downloaded.write)
except Exception as myerror:
if max_attempts != 0:
debug("%s while > except, something going wrong: %s\n \tfile lenght is: %i > %i\n" %
(strftime("%d-%m-%Y %H.%M"), myerror, file_size, downloaded.tell())
)
link = ftp_connect(path)
max_attempts -= 1
else:
break
debug("Done with file, attempt to download m5dsum")
FTPにログインするために個別にテストし、成功しました。しかし、retrbinary や retrlist などのコマンドを実行すると、上記のエラーが発生します
前もって感謝します