Я написал код для входа на FTP-сайт AS/400, перейдите в определенный каталог и найдите файлы, которые мне нужно скачать. Это работает, но кажется, что, когда есть много файлов для загрузки, которые я получаю:Python FTP «ERRNO 10054» Sequential File Загрузить
socket.error: [Errno 10054] An existing connection was
forcibly closed by the remote host
я войти в систему и перейти в соответствующий каталог успешно:
try:
newSession = ftplib.FTP(URL,username,password)
newSession.set_debuglevel(3)
newSession.cwd("SOME DIRECTORY")
except ftplib.all_errors, e:
print str(e).split(None,1)
sys.exit(0)
Я захватить список файлов, которые я необходимость:
filesToDownload= filter(lambda x: "SOME_FILE_PREFIX" in x, newSession.nlst())
А вот где она умирает (в частности newSession.retrbinary('RETR '+f,tempFileVar.write)
):
for f in filesToDownload:
newLocalFileName = f + ".edi"
newLocalFilePath = os.path.join(directory,newLocalFileName)
tempFileVar = open(newLocalFilePath,'wb')
newSession.retrbinary('RETR '+f,tempFileVar.write)
tempFileVar.close()
Он загружает свыше 85% файлов, которые мне нужны, прежде чем я попаду в Errno 10054
, и, я думаю, я просто смущен, почему он, похоже, произвольно умирает, когда он близок к завершению. Моя честная догадка сейчас слишком много запросов на FTP при попытке вытащить эти файлы.
Вот скриншот ошибки, как он появляется на моей командной строке:
Любые советы или указатели было бы удивительным. Я все еще пытаюсь устранить эту проблему.
@JaneT: Модуль 'ftplib' на Python находится на более низком уровне, чем ваше типичное клиентское программное обеспечение FTP, поэтому нет' mget'. –
Возможно ли стороннее программное обеспечение? Мне было проще скриптировать FTP, используя что-то вроде WinSCP, чем прямо в Python. На самом деле, я все еще использую Python для создания сценариев WinSCP, вызывать WinSCP на этих сценариях и обрабатывать файлы локально. Python и WinSCP - хорошая комбинация, когда ваша локальная машина - Windows (которую я вижу из вашей трассы). –
@JaneT У меня нет доступа к заданию на AS/400, к сожалению. Он находится на стороне клиента, и даже если я сделаю запрос на него, будет медленный поворот. – SMT