Ответы пользователя по тегу Python
  • Анализ изображений\видео на совпадение с помощью Python. Как лучше сделать?

    @throughtheether
    human after all
    и сделала скриншот в нужный момент показа изображения в баннере..
    Интересная задача. Этот нужный момент - чем он обусловлен?

    Если необходимо иметь нужный кадр анимации на скриншоте, почему нельзя снять скриншот, скачать gif-файл и затем смонтировать нужный кадр на месте баннера?

    моментально делается скриншот всего экрана.
    Боюсь, это ("моментально") не про селениум.
    Ответ написан
    Комментировать
  • Ошибка в Python 3 при при том, что код практически одинаковый?

    @throughtheether
    human after all
    Простите, я не понял, мой ответ на ваш предыдущий вопрос вам помог? Если так, почему он не отмечен как решение? Если нет, то почему вы не добавили конкретики в старый пост, а создали новый?

    По теме текущего вопроса:
    t = driver.find_element_by_xpath(".//*[@id='list']/li["+str(i)+"]")
    el_text = t.text
    driver.get(el_text)

    Вы уверены, что el_text содержит текст, который можно интерпретировать как URL/URI? Спрашиваю, потому что в примерах 1) и 2) вы используете разные xpath-выражения.
    Ответ написан
    1 комментарий
  • Как вывести значение элемента repr в Python 3?

    @throughtheether
    human after all
    Я не вполне понял вопрос. Вам нужен текст ссылки? Попробуйте
    t = driver.find_element_by_xpath(".//*[@id='header']/div/nav/ul/li[5]/a")
    print (t.text)
    Ответ написан
    Комментировать
  • Как выполнить xor строки?

    @throughtheether
    human after all
    Есть устройство, получающий пакет данных и выводящее переданный в пакете текст.
    ...
    Контрольная сумма вычисляется как xor всех байтов с 4 по 7.
    На мой взгляд, проще всего сначала запаковать все ваши строки и числа в байты при помощи модуля struct (struct.pack), а затем уже xor-ить нужные байты.
    Ответ написан
    Комментировать
  • Почему код выдает AttributeError?

    @throughtheether
    human after all
    Но там, где это должно работать (сайтик с задачками), оно не работает. Как мне переписать этот код, чтобы избавиться от этой ошибки непонятного генезиса?

    Есть подозрение, что проверка результатов в тестовом окружении реализована путем вызова метода .equals(). Поэтому сделайте так:
    1) реализуйте метод Vector.equals(self,other) в вашем классе (равен ли вектор другому вектору)
    2) в методах Vector.add(...), Vector.subtract(...) возвращайте не список, а вектор (экземпляр класса Vector)
    3) перепишите методы Vector.dot(...) и Vector.norm(...). Если они должны реализовывать скалярное произведение и норму, то почему они возвращают списки, а не числа?

    И в чем смысл этих строк, я так и не понял:self.victor = victor, вы, вроде, нигде не используете self.victor.
    Ответ написан
    Комментировать
  • Как импортировать csv файл в iPython без ошибки UnicodeDecodeError?

    @throughtheether
    human after all
    Попробуйте задать кодировку:
    df=pd.read_csv(Location, encoding='cp1251')
    Другой вариант, попробуйте переместить csv-файл в каталог без кириллических символов в пути.
    Ответ написан
    Комментировать
  • Какие подготовить вопросы для специалиста на python?

    @throughtheether
    human after all
    а то мы же ничего в программировании не понимаем!
    И при этом хотите оценить квалификацию другого человека.

    Раз уж речь идет о долевом сотрудничестве - вы готовы к тому, что собеседуемый вами специалист достанет свой листочек и начнет задавать вопросы касательно бизнеса ("как правильно удерживать клиентов"), а затем откажется от сотрудничества только потому, что ваш ответ не совпадет с тем, что написано на листочке? Как вы воспримете такое поведение?
    Ответ написан
    Комментировать
  • Какой модуль подходит для передачи данных на уровне Ethernet?

    @throughtheether
    human after all
    Можете scapy попробовать, но магии ожидать не стоит. И уточните решаемую задачу.
    Ответ написан
    Комментировать
  • Питон для инженера?

    @throughtheether
    human after all
    Какие инженерные задачи вы решали с помощью питона?
    Генерация файлов конфигурации для коммутаторов на jinja. Простые веб-интерфейсы (flask, bottle). Парсинг логов и экспортированных данных (lxml). Учет ресурсов (база на sqlite + веб-интерфейс + выгрузка отчетов).
    UPD: Забыл упомянуть, генерация трафика при помощи scapy в целях отлова бага.

    Почему не баш/пауэршелл?
    Проще было написать один раз на python и запускать где необходимо.
    Ответ написан
    1 комментарий
  • В чем заключается работа человека в web и с сетями?

    @throughtheether
    human after all
    Спасибо, что "призвали" в тред, и извините за задержку с ответом.

    Отвечаю на вопрос, вынесенный в заголовок,
    В чем заключается работа человека в web и с сетями?

    Web и сети (интернет) - две большие разницы, как говорят в Одессе.
    В любом случае стоит знать, как между двумя хостами в сети передаются данные. Как инкапсулируются пакеты, мультиплексируются каналы, разделяются ресурсы и так далее. То есть знать азы Ethernet, IP, TCP, UDP и вспомогательных протоколов вроде ARP, ICMP, DNS. Как пользоваться сокетами, какие есть подходы к реализации сетевых приложений. Как и зачем использовать криптографию (криптографические примитивы, для чего нужны, как их сочетать). Как и для чего использовать модели TCP/IP и OSI. Начальная диагностика сети.

    Далее, в случае изучения сетей стоит обратить внимание на маршрутизацию (какая бывает и зачем нужна, откуда столько протоколов маршрутизации и чем различаются, протокол маршрутизации как распределенная система), коммутацию (Ethernet - каким и для чего был создан, каким стал, отличие коммутации Ethernet и маршрутизации IP, есть ли компромиссный вариант), фаерволлы (почему так называются, какую задачу решают, какие бывают), побочные вещи вроде NAT и тоннелей. Какие и где есть потенциальные слабые места.

    Если вас привлечет прикладной бэкэнд, то стоит изучить работу веб-сервера, прослойки между ним и вашим приложением, базы данных, кэширования. Здесь вообще можно попробовать написать самому весь стек, хотя бы на Python.

    Математическая и алгоритмическая подготовка пригодится везде. Касательно языков - Python хорош универсальностью (под практически любые цели из вашего списка годится), C интересен вкупе с архитектурой компьютера и ОС.

    Касательно безопасности - мне представляется само собой разумеющимся, что перед тем, как изучать возможные атаки (т.е. попытки заставить систему работать в нестандартном режиме), необходимо уяснить в деталях, каков обычный "рабочий" режим.
    Ответ написан
    Комментировать
  • Нужно сайт, не могу вспомнить название. Поможете?

    @throughtheether
    human after all
    Пришлось перерыть около 300 закладок, но, думаю, это он (переехал с pythonfasterway.uni.me).
    Ответ написан
    2 комментария
  • Байты в python?

    @throughtheether
    human after all
    p.s. это нужно для отправки байтовых строк в сокетах python<2.7
    struct.
    Ответ написан
    Комментировать
  • Как написать сайт на Python без фреймворков?

    @throughtheether
    human after all
    При создании сайтов на Python обязательно использовать фреймворки?
    Если не стоит задачи промышленной эксплуатации, то, думаю, нет.
    Как обойтись чистым Python?
    Пишете на python web-сервер с wsgi-интерфейсом. Затем пишете непосредственно web-приложение (с роутингом, шаблонизатором, ORM и прочим по надобности). В процессе узнаете много нового и получаете понимание работы веб-приложений и веб-серверов вообще. До кучи можете еще клиентский интерфейс (фронтэнд) на brython написать.
    Ответ написан
    Комментировать
  • Как ускорит proxy cheker на python?

    @throughtheether
    human after all
    Можете использовать gevent, пример на вашу тему здесь.
    Ответ написан
    Комментировать
  • Может ли Python класс имитировать поведение массива?

    @throughtheether
    human after all
    Не нашел нужных магических методов.

    Вам поможет метод __getitem__.
    Ответ написан
    Комментировать
  • Передача списка в объект класса по ссылке, как сделать?

    @throughtheether
    human after all
    Код покажите, скорее всего вы что-то неправильно делаете.
    Вот пример.
    >>> def f1(l):
    	l=l+[0]
    	
    >>> def f2(l):
    	l+=[0]
    	
    >>> def f3(l):
    	l.append(0)
    
    >>> mylist=[1,2,3]
    >>> f1(mylist)
    >>> mylist
    [1, 2, 3]
    >>> f2(mylist)
    >>> mylist
    [1, 2, 3, 0]
    >>> f3(mylist)
    >>> mylist
    [1, 2, 3, 0, 0]

    В первой функции выражение l=l+[0] создает локальную переменную l, которая ссылается на некий новый список, состоящий из элементов списка, переданного в функцию, с добавленным элементом (0). То есть l слева и l справа - это разные переменные.

    Во второй функции происходит (неявно) вызов метода объекта-списка, переданного в функцию, поэтому список в результате ("снаружи") изменяется. В третьей функции происходит явный вызов метода объекта, переданного в функцию.

    Хотел бы отметить, специалистом по CS (в части теории языков программирования) не являюсь, мог напутать с терминологией.

    Есть на эту тему хорошая статья.

    UPD:
    Первый пример подробнее:
    >>> def f1(l):
    	print "Value at function start: {}, id: {}".format(l,id(l))
    	l=l+[0]
    	print "Value at function end: {}, id: {}".format(l,id(l))
    
    	
    >>> mylist=[1,2,3]
    >>> f1(mylist)
    Value at function start: [1, 2, 3], id: 44215272
    Value at function end: [1, 2, 3, 0], id: 5440176
    >>> mylist
    [1, 2, 3]

    Видно по разным id, что происходит обращение к разным переменным.
    Ответ написан
    2 комментария
  • Где найти информацию о распараллеливании вычислений в питоне?

    @throughtheether
    human after all
    Посоветуйте интересный проект/хороший пример или блог, где затронута эта тема.
    IPython, MPI

    З.ы можно ли для этих целей использовать гринлеты?
    Можно, но не нужно. Гринлеты, насколько мне известно, более эффективны при конкурентной обработке задач, касающихся IO.
    Ответ написан
    Комментировать
  • Как правильно переписать часть кода с Python на Си?

    @throughtheether
    human after all
    primary_list = tuple([line.strip() for line in open('file1.txt', 'r')])
    secondary_list = tuple([line.strip() for line in open('file2.txt', 'r')])
    Квадратные скобки, на мой взгляд, необязательны.

    for item in primary_list:
        if item is None:
          continue
    Не уверен, что эта ветвь выполнится хотя бы раз.

    Если стоит задача ускорить работу скрипта, то, на мой взгляд, проще переписать так:
    primary_set = frozenset(line.strip() for line in open('file1.txt', 'r'))
    secondary_set = frozenset(line.strip() for line in open('file2.txt', 'r'))
    with open('test.txt', 'w') as f:
        for item in primary_set&secondary_set:
            if item:
                f.write(item+'\n')
    print 'Complete'

    Можете добавить сортировку по вкусу.
    Ответ написан
    Комментировать
  • Как улучшить скорость функции?

    @throughtheether
    human after all
    Что можете посоветовать?

    sum(range(n+1)) - константа (в дальнейшем, C) для заданного n, можно вынести ее вычисление за цикл.
    Далее, ваше уравнение можно переписать: b = (C-a)/(a+1). Можно перейти от квадратичного времени к линейному, итерируя по a и проверяя делимость (C-a) на (а+1)

    Навскидку:
    def get_ab(n):
    	C=sum(xrange(1,n+1))
    	return [(a, (C-a)/(a+1)) for a in xrange(1,n+1) if (C-a)%(a+1)==0 and (C-a)/(a+1)<n]


    In [10]: % timeit removNb(10)
    1000 loops, best of 3: 185 us per loop
    In [11]: %timeit get_ab(10)
    100000 loops, best of 3: 6.74 us per loop
    Ответ написан
    3 комментария