import ftplib
import os
import os.path
host = "server.serv"
port = 0000
user = "user"
password = "password"
filename = "file.txt"
ftp = ftplib.FTP()
ftp.connect(host, port) #конектюсь к ftp
ftp.login(user, password) #выполняю вход
file = open(filename) #Открываю файл (по дефолту мод r)
ftp.storlines('STOR ' + filename, file)
file.close()
ftp.quit()

FTP.connect. Учитывая что библиотека FTP используется во многих проектах, и c подобными проблемами больше никто не сталкивается, рискну предположить, что неправильно заданы параметры - адрес и порт. Для их проверки удобно использовать интерактивный режим Python.FTP_TIMEOUT = 10 # seconds
ftp.connect(host, port, FTP_TIMEOUT)ftp.cwd(path)try:
ftp.connect(...)
ftp.login(...)
ftp.cwd(...)
except Exception as e:
...
...
try:
ftp.storbinary(f'STOR {filename}', f)
except Exception as e:
... 
import ftplib
import os
import os.path
host = "server.serv"
port = 0000
user = "user"
password = "password"
filename = "file.txt"
file = open(filename)
FTP_TIMEOUT = 10 # seconds
ftp = ftplib.FTP()
try:
ftp.connect(host, port, FTP_TIMEOUT)
ftp.login(user, password)
print(ftp.login(user, password))
except Exception as e:
print("Неудалось подключиться к серверу")
try:
ftp.cwd('Mihail hello')
print("Перешел в каталог 'Mihail hello' ")
except Exception as e:
print("Не удалось перейти в каталог")
try:
ftp.storlines(f'STOR {filename}', file)
except Exception as e:
print("Не удалось записать файл")
ftp.quit()
print(ftp.nlst())
но как я знаю, в целях защиты, команды которые выводят список файлов и т.д сервер не принимает.
501 это - не корректный порт.
Надо посмотреть в какой порт стучишься тогда будет понятно.
Просто 2134 он же 21 это порты авторизации, рабочие порты они другие по фтп, надо чтоб все было по тсп, юдп не канает у нас не локалка, у нас интернет.
На самом деле наш фтп работает по тсп, у нас юдп душат провайдеры
host = "server.serv"
port = 2134
ftp.connect(host, port, FTP_TIMEOUT)
у нас рабочие порты от 30000 до 65000
может ли быть проблема в том что сервер дает мне рабочий порт для передачи данных, а код использует порт указанный мной в переменной port
Сервер отправил пассивный ответ с неопределенным адресом. Использую существующий адрес
from ftplib import FTP
class MyFTP(FTP):
def makepasv(self):
__, port = super().makepasv()
return self.host, port
ftp = MyFTP()
... ftp.set_pasv(true)