Задать вопрос
  • Python как изменить дату создания файла?

    @ComingFlex Автор вопроса
    Нашёл способ! В среде PyCharm почему-то не работает. Только в консоли запускать
    from win32_setctime import setctime
    data = дата(формат timestamp)
    setctime('photo.jpg', date)
    Ответ написан
    2 комментария
  • Как изменить табуляцию в Notepad++?

    Stalker_RED
    @Stalker_RED
    опции → настройки → синтаксис/табуляция
    Ответ написан
    1 комментарий
  • Как снять ограничение в 255 символов при создании литературного источника?

    @Drno
    судя по тому что вопрос висит с 2012г в гугле - ограничение уже давно
    Но непонятно, что за название книги такое... больше 255 символов)
    Ответ написан
    5 комментариев
  • Не ставятся кавычки «елочки». В чем проблема?

    @Hwangw Автор вопроса
    Проблема решилась тем же образом, что и появилась. Все дело в кнопке NumLk, которую я нажал, когда пытался прогнать кота. Пишу это на тот случай, если мой вопрос не удалят и кто-то когда-то на него наткнется, ища решение.
    Ответ написан
    Комментировать
  • Как убрать точки на месте пробелов в Word (отображены не все значки, а именно точка)?

    15432
    @15432
    Системный программист ^_^
    Файл - параметры - отображение - "всегда показывать эти знаки форматирования на экране"
    Ответ написан
    1 комментарий
  • Как убрать ошибки в коде?

    @MaLikoV
    Переписать весь код, в вашем коде отсутствует логика.

    Например строка 5, если ответ на вопрос "Ты хочешь записаться на курсы?" == "нет" что должно произойти? Я не понял и питон не понял. Прочтите что на писано и в голове проследуйте за логикой написанного, увидите все ошибки.

    Такое ощущение что вы взяли код и не понимая его меняете.

    Как должно было бы выглядеть
    print("Привет!")
    print("Тебя приветствует IT школа GeekTech!")
    test1 = input("Ты хочешь записаться на курсы?")
    if test1 == "да":
        print("Хорошо")
    elif test1 == "нет":
        print("Гудбай")
    else:
        print('Принимаю только да или нет')
        
    test3 = input("Тебе когда нибудь давали чапалах со скоростью света?")
    if test3 == "нет":
        print('Алакикаджи')
    else:
        print('Как скажешь')
    Ответ написан
    1 комментарий
  • Как правильно закрыть поток в python?

    Sly_tom_cat
    @Sly_tom_cat
    .
    А не надо извне закрывать потоки и процессы. Можно получить кучу неприятностей.
    В нормально проработанном решении потоки/процессы сами должны закрываться тогда, когда нужно. Если нужно управлять этим извне - то для этого и существуют примитивы типа семафоров/флагов/эвентов.

    В потоки полезно засовывать поиск всякий или подготовку кусочков общего решения. При этом можно использовать два шаблонных примитива: "коллектор" и "победитель":

    "Коллектор":
    import threading
    def job(id, ...):
    global res
      <Подготовка блока данных>
      res[id] = <блок подготовленных данных>
      return
    
    res = []
    for i in range(N):   # запуск N потоков
        res.append(<пустой блок>)
        threading.Thread(target=job, args=(i, ...)).start()
    for th in threading.enumerate():  # ожидание всех потоков 
        if th != threading.currentThread():
          th.join()
    <здесь массив с блоками полностью собран >


    "Победитель":
    import threading
    def job(...):
      global val
      global event
      while <не нашли>
        <элементарный шаг поиска>
        if event.is_set():
          return   # кто-то уже нашел искомое
      val=<то что нашли>
      event.set()   # этот поток нашел искомое и радостно сообщает всем об этом
      return
    
    val = None  # искомое значение
    event = threading.Event() # флаг сигнализирующий о том что решение найдено
    threads = []
    for i in range(N):
        threads.append(threading.Thread(target=job, args=(i, ...)))
        threads[-1].start()
    event.wait()  # тут основной поток ждет сигнала о победе от одного из запущенных потоков
    # если есть шанс, что победителя может и не быть, то в wait() нужно указать таймаут
    # и читать значение event.wait(), что бы узнать - сработал таймаут или появился победитель.
    <тут обрабатываем найденное>
    for th in threads:   # Подчищаем за собой - гарантированно собираем закрывшиеся потоки
          th.join()


    ЗЫ последний цикл в "победителе" - часто не обязателен, но если сама эта процедура запущена во множестве потоков, то можно получить так называемый "потоковый потоп", когда потоки не успевают закрываться сами и плодятся в системе со страшной силой, с предсказуемыми последствиями.
    ЗЫЫ также обратите внимание на варианты работы с набором потоков. В примере "Коллектор" не подразумевается, что в программе есть какие-то еще потоки, поэтому сборка потоков идет всех, кроме текущего (основного потока программы). А вот в "Победитель" потоки сохраняются в списке и из этого списка потом собираются. Это позволяет иметь в программе и другие потоки работающие в параллель с нашим поиском победителя (и в частности запускать сам такой поиск победителя в независимых потоках). Правда для оформления этого кода в отдельные потоки - возможно потребуется избавиться от глобальных переменных и работать только через передаваемые в job параметры.
    Ответ написан
    Комментировать
  • VK API: Captcha needed?

    @romaro
    Правильно ли я понимаю, что если использовать метод-обертку execute, в который можно добавить до 25 вызовов PHOTOS.save, то можно кратно сократить кол-во возвращаемых капч, т.к. в случае правильного решения капчи будет создано сразу 25 фотографий в альбоме вместо того, чтобы вводить капчу для каждой фотографии?
    Ответ написан
    Комментировать
  • VK API: Captcha needed?

    @Zafon
    Искал решение на эту проблему долгое время , случайно она решилась после того как сайт на котором работал скрипт с VK API хостер перенёс с сервера Украины на сервер в Германию.
    Скрипт перестал работать и стал запрашивать при первом же обращении к VK каптчу.
    Но пока сайт стоял на сервере в Украине всё работало нормально,установил этот скрипт на другой сайт который находился на сервере в Украине и вуаля - всё работает.
    Спрашивается почему? Да потому ,что токен получал пользователь у которого IP был Украинский и скрипт работал с Украинского IP.
    Что я сделал - получил токен используя IP Германии.
    Зашёл через Германский прокси сервер в ВК,получил токен,ввёл в настройках скрипта новый токен и всё заработало.
    Отсюда делаем выводы ,что токен нужно получать с той же страны где работает скрипт или программа.
    Если не совпадают то срабатывает система защиты ВК и просят ввести каптчу.
    Ответ написан
    Комментировать
  • VK API: Captcha needed?

    Имел дело, выхода нет. Капчу просит только тогда, когда пользователь и сервер с которого пробуете использовать токен из разных стран/регионов. Проверено более чем на 50к аккаунтах.
    Пример:
    Пользователь давший права из украины + сервер получающий данные по токену тоже в украине = капчу не просит.
    … из украины + сервер получающий данные по токену тоже в украине = капчу не просит.
    … не из украины + сервер в украине = капчу просит даже при первом запросе.
    … из россии + сервер в украине = капчу просит даже при первом запросе.
    … из россии + сервер в россии = капчу не просит.
    … из россии (Сибирь) + сервер в россии (МСК) = капчу просит.

    Несколько недель пробовали как-то обойти но ничего не вышло, вариант только парсить капчу через какой-то онлайн сервис. Но это долго и проблемно при большом количестве пользователей.
    Для себя выбрали решение когда пользователь сам парсит данные из вк и отправляет нам на сервер. При таком раскладе капчу не просит.

    Если Вам нужно делать запросы когда пользователь оффлайн, можно перекинуть эту работу на пользователей которые онлайн :). Смотря какое у Вас приложение.
    Ответ написан
    2 комментария
  • Url адрес в get запросе в python 3.6 обрезается, почему?

    Negezor
    @Negezor
    Senior Shaurma Developer
    Отправлять данные через POST, а не GET. Обычно GET запрос лимитируется до 64k, но зависит от настроек веб-сервера.
    import requests
    def send_message (peer_id,message='',attachment='',forward_messages='',token=""):
        r=requests.post('https://api.vk.com/method/messages.send', data ={'peer_id':peer_id,'message':message,'attachment':attachment,'forward_messages':forward_messages,'v':'5.71','access_token':token})
        print((r.content).decode('utf-8'))
    Ответ написан
    2 комментария