• Почему поток запускается только 1 раз?

    @iSergios
    Python-разработчик
    Ну во-первых, цикл у вас запускается не в отдельном потоке, а в том же потоке, что и окно. Это замечательно видно по тому, что окно фризится, пока цикл работает (не двигается, не ресайзится). То, что вы унаследовались от Thread еще не означает, что все, что вы запустите, будет работать в отдельном потоке. Пока у вас все в один поток идет. Оттуда, к слову, и ошибка - метод start() может быть вызван только один раз на один поток.

    Простейший способ решить вашу задачу таков:
    from tkinter import *
    import time
    import threading
    
    
    class But_print():
        def __init__(self):
            self.but = Button(root)
            self.but["text"] = "to count"
            self.but.bind("<Button-1>", self.printer)
            self.but.pack()
    
        def thread(func):
            '''
            Это простейший декоратор. В него мы будем заворачивать 
            функции. Любая функция, завернутая этим декоратором, 
            будет выполнена в отдельном потоке.
            '''
            def wrapper(*args, **kwargs):
                current_thread = threading.Thread(
                    target=func, args=args, kwargs=kwargs)
                current_thread.start()
    
            return wrapper
    
        @thread  # собственно, применяем декоратор
        def printer(self, event):
            for i in range(10):
                print(10 - i - 1, "second")
                time.sleep(1)
    
    
    root = Tk()
    obj = But_print()
    root.mainloop()
    Ответ написан
    2 комментария
  • Если на Upwork отменить заявку на проект, то вернуться ли коннекты?

    @iSergios
    Python-разработчик
    Нет, иначе бы они их не продавали)
    Ответ написан
    Комментировать
  • При каком количестве откликов на Upwork стоит рассматривать работу?

    @iSergios
    Python-разработчик
    Надо стараться попасть в первую десятку. Чем больше откликов перед вами, тем ниже шансы. Один раз взял заказ, когда откликов было уже выше крыши (не помню сколько, больше 50 точно). Но это, скорее, случайность, которая выстрелила исключительно благодаря тому, что заказ к тому моменту был уже готов, при этом в первой же строке была ссылка на видео с демонстрацией работы скрипта.
    Ответ написан
    Комментировать
  • Как парсить большой текст на Python?

    @iSergios
    Python-разработчик
    Однако лягушки. Однако кактус.
    Решение настолько простое, что выкладывать готовый код как-то неприлично. Копайте в сторону метода .readline()
    Вообще же, чтобы не колоться в будущем и облегчить жизнь людям, я бы на вашем месте прислушался к советам по поводу БД. Сложить один раз в базу (можно sqlite), написать простенькую гуевину к бд для ввода, удаления и поиска. Работы на пол дня.
    Ответ написан
  • Как проверить одно временно 3 массива на пустоту с одним условием?

    @iSergios
    Python-разработчик
    a = [5, 7, 8]
    b = []
    c = [1, 2, 3]
    for c in (a,b,c):
    	if not c:
    		print('Есть пустой')
    Ответ написан
  • Какую выбрать книгу для изучения python?

    @iSergios
    Python-разработчик
    для старта Лутц. Без вариантов. Понимания будет намного больше:
    • "Изучаем Python"
    • "Программирование на Python" - 2 тома.

    Издание брать самое последнее. Когда я их читал, это было 4-е издание, 11-го года. Сейчас может уже и поновее есть.
    После:
    • Python. К вершинам мастерства. 2016 (Рамальо Лучано)

    Очень хорошо раскрываются аспекты написания именно нативного кода на Python.
    Ответ написан
    2 комментария
  • Как остановить сеанс OpenVPN в ubuntu?

    @iSergios
    Python-разработчик
    sudo service openvpn stop
    Ответ написан
  • Меры предосторожности при парсинге на Python?

    @iSergios
    Python-разработчик
    1) Бдить временные интервалы, использовать разные IP и учетные записи (если возможно).
    2) Вероятно да. Однако никто Вам тут не ответит, все очень индивидуально. Разведка всегда проводится методом проб и ошибок.
    3) Да пожалуйста. За парсинг у нас не сажают. В худшем случае забанят. Решать Вам.
    4) В смысле?
    5) Откуда ж нам знать-то?
    Ответ написан
    Комментировать
  • Как оптимизировать мой код в Python?

    @iSergios
    Python-разработчик
    list_iter = []
    o = 1  # 'O' - одно из самых неудачных наименований переменной (в прочем, 'o' не многим лучше :))
    b = 2.7
    rou = 3
    for c in range(13):
    	list_iter.append(round((o+sum(list_iter))/(b-1), rou))
    >>> list_iter
    [0.588, 0.934, 1.484, 2.356, 3.742, 5.944, 9.44, 14.993, 23.812, 37.819, 60.066, 95.399, 151.516]
    Ответ написан
    3 комментария
  • Как лучше всего организовать сортировку по нескольким параметрам?

    @iSergios
    Python-разработчик
    Очень нетривиально Вы задумали с сортировкой. К слову словарь сортировку не поддерживает, поэтому я бы от него отказался (особенно с учетом того, что у Вас не пара переменных, а три).

    Для организации доступа к Вашим трем переменным никаких классов писать не надо, достаточно использовать namedtuple:
    >>> import collections
    >>> pair = collections.namedtuple('pair',['cat','dog','text'])

    Хранить "пары" лучше в списке:
    >>> vlist=[]
    >>> vlist.append(pair(900,2,'foo'))
    >>> vlist.append(pair(500,4,'bar'))
    >>> vlist.append(pair(300, 10, 'foobar'))
    >>> vlist
    [pair(cat=900, dog=2, text='foo'), pair(cat=500, dog=4, text='bar'), pair(cat=300, dog=10, text='foobar')]

    При этом будет поддерживаться сортировка по первому параметру (cat):
    >>> vlist.sort()
    >>> vlist
    [pair(cat=300, dog=10, text='foobar'), pair(cat=500, dog=4, text='bar'), pair(cat=900, dog=2, text='foo')]


    Заметьте, что на выходе мы будем иметь изменяемый список, что позволит Вам пересортировать его циклом так, как Вам заблагорассудится (скажем, если значения cat у соседних элементов равны, отсортировать их в обратном порядке по значению dog (я правильно понял, что Вы хотели именно это?)).
    Ответ написан
    Комментировать
  • Notepad++ под linux?

    @iSergios
    Python-разработчик
    NotepadQQ? Не он, но очень близкий и очень годный аналог под GPL.
    Ответ написан
  • Каким менеджером паролей вы используете в Linux/Android?

    @iSergios
    Python-разработчик
    Меня сейчас забросают помидорами, но текстовый файл в криптоконтейнере в облаке. Ключ от криптоконтейнера можно хранить в другом облаке. Паролей при этом достаточно помнить всего 2 или 3 (если ключ в другом облаке храним).

    А вообще, что Вам мешает тупо синхронизировать через любое удобное облако базу keepass'а? Я в свое время довольно долго именно так его и использовал (просто держал его в Dropbox'е).
    Ответ написан
    Комментировать
  • Как научиться быстро читать?

    @iSergios
    Python-разработчик
    По себе могу сказать, что скорость чтения вообще не панацея. Читать могу очень быстро, 1000 слов в минуту не предел. Но, как таковое скорочтение в "боевых" условиях применяется довольно редко, в основном на работе для чтения документов. При чтении технической литературы, документации или иных текстов, содержащих заранее неизвестный контент, фактическая скорость чтения упирается в скорость восприятия информации (понятное дело, что речь идет не о первичном восприятии). В особо сложных случаях она может падать до нуля - когда просто надо все нафиг закрыть и обдумать :) Применять же скорочтение на художественной литературе, имхо, вообще бессмысленно - там же и представить надо, и посмаковать-перечитать).
    Ответ написан
    Комментировать
  • Что PayPal делает с отрицательным балансом?

    @iSergios
    Python-разработчик
    Я не верю, что PayPal будет кому-то продавать такие долги. Они официально зарегистрированы на территории РФ, Ваши данные у них есть. Мы не в Великобритании и не в США. Судебные издержки у нас мизер. Ничто не помешает им при желании просто обратиться с иском. При этом лично никуда ходить не надо, а Ваша вероятность отбиться стремится к нулю. Но сумма маловата. Скорее всего будете в черных списках, пока не погасите, вот и все. Ну плюс процент, но вряд ли конский.

    Ситуация отвратительная, согласен. Но я согласен и с тем, что Вы сами во многом виноваты. То, что я скажу, Вам уже не поможет, но, возможно, поможет кому-то, кто с аналогичной проблемой найдет этот топик.
    PayPal как инструмент невероятно удобен. Для покупателя. Для продавца есть преимущества, да. Однако все эти преимущества заканчиваются ровно там, где начинаются проблемы с покупателем. Диспут на PayPal - это очень мерзкая штука, выиграть которую продавцу очень и очень сложно. Покупатель всегда будет прав. Поэтому диспута на PayPal надо избегать всеми мыслимыми, немыслимыми, разумными, неразумными и даже сказочными способами. Вы рефунд по диспуту штатной процедурой сделали, в этом Ваша фатальная ошибка. Надо всегда помнить, что это аварийный вариант, использующийся только в самом крайнем случае. Я работаю с PayPal c 2007 года, как продавец - с 2011. Как продавец я не выиграл ни одного диспута (было штуки 3, наверное). Немного не Ваш случай, но для оценки степени недоверия к продавцу сойдет: PayPal выносил решение в пользу покупателя даже когда я помимо валидного трек-номера представлял "группе разбора" фотографии посылки упакованной с написанными адресами, ее же на почте после оформления приемки - с трек-номерами и отметками почтовых работников, ее же на фоне чека об оплате отправки (+ подробный скан этого чека). И все равно я ловил решение не свою пользу с обоснованием "продавец не представил достаточных доказательств отправления товара".
    Если Ваш клиент готов решать проблемы только через диспут - нафиг такого клиента. Лучше как можно быстрее свернуть с ним все дела и больше не открывать. Если он всенепременно хочет получить свои деньги взад, ни в коем случае не доводить до диспута и (упаси Боже) решения группы разбора. Иногда есть смысл вернуть ему деньги простым переводом, возможно даже больше, чем должны ему (но это опасно, диспут он все еще может отрыть, но и Вы тоже можете). Но все-таки сомнительных клиентов лучше переводить на всякого рода Scrill или даже Bitcoin (если структура проекта позволяет, разумеется). А лучше с ними и вовсе дела не иметь.
    Ответ написан
    2 комментария
  • Как просмотреть файл по url и записать в массив построчно?

    @iSergios
    Python-разработчик
    Гм, вообще-то искомый массив Вы получили уже на этой строке:
    res = urllib.request.urlopen('http://www.gfrag.co.za/README.txt').readlines()

    Можете в этом убедиться:
    >>> type(res)
    <class 'list'>
    >>> res[1]
    b'CONTENTS OF THIS FILE\n'

    что вас смущает?

    А так:
    infa.append(res)

    Вы поместили весь список res в первый элемент списка infa:
    >>> infa[0][1]
    b'CONTENTS OF THIS FILE\n'


    upd:

    Метод readlines() уже разбил ваш текст построчно. Таким образом, список res содержит строки байт из текста. Для начала вам надо перевести bytes в string с помощью метода decode().
    text_lines = [t.decode() for t in res]
    Далее уже работайте со списком как вам угодно. Можно, к примеру, получить список со всеми вхождениями этого вашего 'Drupal':
    excess_lines=[c for c in text_lines if 'Drupal' in c]

    или сформировать список без них:
    final_lines=[c for c in text_lines if 'Drupal' not in c]
    Ответ написан
    2 комментария
  • Upwork - Конфискация всех заработков. Как избежать?

    @iSergios
    Python-разработчик
    Однако Вы себе напридумывали. Давайте разберемся по-порядку.
    Внимание! Будет многабукав и много юридической информации.

    Итак, как к нам поступают деньги от клиентов Upwok?

    1) Клиент передает деньги Upwok'у. Ну тут как бы все чисто, никаких проблем. Деньги-то не у нас. Де-факто (и де-юро тоже) деньги перечислены на счет в банке или иной кредитной организации, который принадлежит Upwork.

    2) Upwork зачисляет деньги на наш "счет". [s]И тут Вы впадаете в панику.[/s] Давайте начнем с того, что деньги, как таковые, никуда не двигались. Они как лежали на счету Upwork'a в банке, так и продолжают там лежать. Upwork лишь рисует небольшую циферку у Вас в профиле и все. Ни юридически, ни фактически эти деньги Вам не принадлежат*. Upwork не является ни банковском, ни кредитной организацией, ни фондом ни иным лицом, уполномоченным производить операции с чужими денежными средствами. Все денежные средства, поступающие на его счета от заказчиков становятся денежными средствами Upwork. А то, что Upwork выплачивает эти суммы Вам - это он распоряжается принадлежащими ему деньгами. Т.е. выступает не просто посредником, который передает деньги из одних рук в другие, а промежуточным собственником. Как если бы вы купили автомобиль у одного товарища, оформили его на себя, а потом продали/переоформили его другому товарищу. То, что в Вашем профиле отражаются какие-то суммы с обозначением валюты, это не отражение состояния какого-то пресловутого счета - у Вас его на Upwork'e нет и быть не может - чисто юридически это просто обещание Upwork'а выплатить Вам сумму, эквивалентную указанной. И все. К этому моменту Вы еще не собственник этих денег, вы не можете их потратить.

    3) Upwork "выводит Ваши деньги" (а де-юре просто перечисляет на Ваш счет из своих), и вот тут возможны варианты:

    3.1) Upwork перечисляет деньги на Ваш банковский счет - проблем нет, все чисто. С точки зрения налогообложения возможны трудности, если это счет в иностранном банке, но это не проблема, а именно трудности, и их тут разбирали.

    3.2) Upwork перечисляет деньги на Ваш счет в небанковской кредитной организации. Опять варианты:

    3.2.1) Это PayPal или иная небанковская кредитная организация, которая официально зарегистрирована на территории РФ и включена в соответствующие реестры - проблем нет, все чисто. Эти организации имеют право осуществлять операции с валютой (при наличии лицензии, при ее отсутствии они автоматически переведут эти средства в национальную валюту, т.о. доллары Вы не получите).

    3.2.2) Это Skrill или иная небанковская кредитная организация, которая на территории РФ не зарегистрирована. Проблем нет с точки зрения нарушения отечественного законодательства. Upwork перевел принадлежащие ему деньги на некий счет, который по документам незарегистрированной на территории РФ организации принадлежит Вам. Т.е. именно Вы никаких валютных операций не совершали. К слову, доказать само существование, а равно принадлежность такого счета Вам в случае с иностранной организацией очень непросто. Ваши деньги приобретают довольно интересный статус кво - вы можете ими управлять, но в правовое поле РФ (а равно под действие предусмотренных законами ограничений) они как бы не попадают.

    И да, статья 15.25 КоАП РФ фактически запрещает расчеты в валюте на территории России в обход банков. Вот и все.

    _____________
    * В соответствии с действующим отечественным законодательством (что, кстати, полностью согласуется с общепризнанными принципами и нормами международного права) право собственности включает в себя 3 элемента: владение (фактическое обладание, включая принадлежность депозита), пользование (возможность извлекать из вещи пользу) и распоряжение (возможность определять дальнейшую юридическую судьбу вещи; применительно к деньгам - тратить их). Нет хоть одного из элементов - нет права собственности. Нет права собственности - нет проблем.
    Ответ написан
    Комментировать
  • Python3 для опытного непитонщика, какую литературу выбрать?

    @iSergios
    Python-разработчик
    1. Python. К вершинам мастерства / Пер. с англ. Слинкин А. А. - М.: ДМК Пресс, 2016. - 768 с. (ISBN 978-5-97060-384-0)
    Интересно и хорошо написано, причем даже с переводом особых косяков нет. На примерах показано создание качественного Python-way кода. Мне понравилась, советую)

    2. Learning Python Design Patterns (Edition 2)
    Если Вы гуру в ООП, возможно, будет не так интересно. Для свежеприготовленного питониста очень полезно. В любом случае стоит полистать.
    Ответ написан
    1 комментарий
  • Как зеркально поменять строку?

    @iSergios
    Python-разработчик
    Я, правда, питонист, про метод reverse в Java не знаю, но знаю, что String умеет split, а массивы можно обходить циклом в обратном порядке :)
    А вообще да, есть способ и изящнее, и он - первая строка в гугле.
    Ответ написан
    Комментировать
  • В пользу какой книги сделать выбор?

    @iSergios
    Python-разработчик
    Мне Шилдт очень нравится. "Руководство для начинающих" прекрасно подойдет для начала. Кроме того, есть еще вариант с более подробным изложением: "Java 8. Полное руководство" 9-е издание, 2015 (ISBN 978-5-8459-1918-2) - новичку бы не советовал, но после первой книги поглубже разобраться поможет.
    Ответ написан
    Комментировать
  • Можно ли настроить использование socks5 как SSH?

    @iSergios
    Python-разработчик
    Есть софт, который умеет использовать только SSH в качестве прокси.

    Все что ниже, только запутывает.

    Как именно он использует ssh в качестве прокси? Если он сам поднимает SSH, то изменить это можно только изменив код программы. Вы, я так понял, хотите прослушивать трафик между этим приложением и чем-то еще. Если так, то смиритесь, что без изменения приложения трафик от приложения до SSH сервера для вас недосягаем. Если же трафик идет дальше, можно выпендриться: поднять свой SSH-сервер, и при условии, что вам доступны ключи (или вы можете сгенерить новые) заставить использовать его ваше приложение (либо подменой DNS, либо смухлевав с IP любым доступным вам способом). После слушайте.
    Ответ написан