Найти - Пользователи
Полная версия: проблема - string != string
Начало » Python для новичков » проблема - string != string
1
Игнат
python3
есть класс

class acc:
server = ''
login = ''
password = ''
в него во время работы помещается айпи сервера в виде строки
после чего пытаюсь подключиться к FTP

ftp = FTP(acc.server, acc.login, acc.password, timeout=5)
ничего не получается, таймаут истекает
но если прописать айпи вручную - работает:

ftp = FTP('82.164.59.10', acc.login, acc.password, timeout=5)
самое непонятное, что если тут же распечатать вот это:
        print(type (job.acc.server), len(job.acc.server), job.acc.server, type('82.146.59.10'), len('82.146.59.10'), '82.146.59.10')
print('DIFF', (job.acc.server == '82.146.59.10'))
выведет:
<class 'str'> 12 82.164.59.10 <class 'str'> 12 82.146.59.10
DIFF False
т.е. они полностью идентичны, но при сравнении - false!
почему так?
igor.kaist
хм… вы уверены что работаете с тем же экземпляром класса?
Игнат
нашел проблему, правда до конца её не понимаю

изначально имеем ftp-акк в списке - data.strip()
я помещал его в свойство объекта Job():
j.acc = data[1].strip()
а потом обрабатывал функцией, которая разбивала ftp-акк на логин-пароль-сервер-файл и возвращала объект Acc() с 4мя свойствами:
j.acc = self.parseFtp(j.acc)
моя ошибка была в том, что я тут же помещал полученный объект на место строки
в php5 это работало бы нормально, а в питоне начались вот такие паранормальные сравнения, в которых строка j.acc.server - не была равна ‘11.11.11.11’ - при том, что совпадала длина, тип и содержимое

исправил так:
j.acc = self.parseFtp(data[1].strip())
и всё заработало
Игнат
хм, а сейчас всё стало ещё более необьяснимо:

        print((job.acc.login == 'user')) # true
print((job.acc.password == 'pass')) # true
print((job.acc.server == '82.164.59.10')) # true

#ftp = FTP(job.acc.server, job.acc.login, job.acc.password, timeout=5) # ERROR TIMEOUT!!
ftp = FTP('82.146.59.10', 'login', 'passw') # работает
как??? как это объяснить? я уже изолировал этот код от контекста
почему конструктор FTP() не принимает свойства объекта?

при этом, в отдельном файле, вне проекта, такой пример работает:
from ftplib import FTP
class a:
server = '82.146.59.10'

class b:
a = ''

b.a = a()

ftp = FTP(b.a.server, 'user', 'pass')
Игнат
о господи, я идиот

конечно 82.146.59.10 не равен 82.164.59.10
o7412369815963
я смотрю, не жалко тебе давать доступ к своему сайту и виртуалке всему интернету…

меняй пароль на ftp и ssh, пока это не сделал кто-нибудь другой
igor.kaist
o7412369815963, поправил за него, а то пока топикстартер объявиться или сообразит что к чему…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB