Ошибка 0 при использовании ftplib

Я пытаюсь загрузить файлы с помощью ftplib Python, и у меня возникла проблема. Когда я запускаю скрипт на своем компьютере, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "ftp_get.py", line 20, in <module>
    ftps.retrbinary('RETR '+ filename, file.write)
  File "C:\Python27\lib\ftplib.py", line 710, in retrbinary
    conn.unwrap()
  File "C:\Python27\lib\ssl.py", line 771, in unwrap
    s = self._sslobj.shutdown()
socket.error: [Errno 0] Error

Но когда я запускаю его на сервере, он работает безупречно. Это также работало на моем компьютере ранее этим утром, но теперь я получаю сообщение об ошибке. Код Python ниже:

from ftplib import FTP_TLS
import os
import glob

user = "something"
passwd = "some_password"
ftps = FTP_TLS('domain')
ftps.login(user, passwd)
ftps.prot_p()       
filenames = ftps.nlst() 

for filename in filenames:
    local_filename = os.path.join('C:\\test2\\', filename)
    file = open(local_filename, 'wb')
    ftps.retrbinary('RETR '+ filename, file.write)
    print "Downloading - " + filename
    #ftps.delete (filename)
    #print "Deleting - " + filename
    file.close()

ftps.quit()

Почему на одних компьютерах работает, а на других нет?


person GreyHippo    schedule 02.10.2015    source источник
comment
вы должны проверить, не использует ли какая-либо другая программа тот же порт   -  person DreadfulWeather    schedule 02.10.2015
comment
Как мне проверить, не используется ли что-то на порту 21 или любом другом порту?   -  person GreyHippo    schedule 02.10.2015
comment
какую операционную систему вы используете обычно 21 не следует использовать, я думаю   -  person DreadfulWeather    schedule 02.10.2015
comment
МОЙ ftp-сервер размещен на Yahoo. Я пытаюсь запустить свой скрипт Python с компьютера с Windows 7 и сервера Windows 2012 R2.   -  person GreyHippo    schedule 02.10.2015
comment
Сегодня утром я смог запустить скрипт, но в настоящее время я получаю сообщение об ошибке.   -  person GreyHippo    schedule 02.10.2015
comment
используйте монитор ресурсов, чтобы увидеть, использует ли какая-либо другая программа порт 21, и проверьте, работает ли ваш ftp-сервер на yahoo   -  person DreadfulWeather    schedule 02.10.2015
comment
Я последовал совету из stackoverflow.com/questions/12321915/ и я не получаю никакой ошибки   -  person GreyHippo    schedule 02.10.2015


Ответы (1)


Кажется, есть проблема с доступом к серверам Pure-FTPd. Это задокументировано здесь: https://bugs.python.org/issue25437 Согласно отчету, режим совместимости, который вы можете установить для сервера. В моем случае у меня не было доступа к серверу, поэтому я закомментировал ftps.prot_p(), что означает, что данные отправляются в незашифрованном виде.

person dtf    schedule 05.03.2016
comment
Печально, что это, по-видимому, было исправлено для Python 3.6, но, по-видимому, не для каких-либо предыдущих версий, поскольку способность FTP-серверов демонстрировать такое поведение считается новой функцией. Отключение шифрования не вариант. - person Darren Ringer; 09.06.2017