Задать вопрос
  • Как установить face recognition?

    Vindicar
    @Vindicar
    Что ты понимаешь под "face recognition", и причём тут VS?
    Face recognition - это название для семейства технологий, если речь про конкретное ПО/библиотеку, назови её и дай ссылку.
  • Что в библиотеке Python numpy означает запись numpy.sum(img==1)?

    Vindicar
    @Vindicar
    Алан Гибизов, это удобнейшая фича numpy.
    Выражение a == 1 вернёт массив из логических элементов такого же размера, как и a. Каждый элемент будет содержать результат сравнения соответствующего элемента a с единицей.

    А далее используется тот факт, что в питоне int(True) == 1. Тогда сумма элементов логического массива будет равна количеству истинных элементов в нём.
  • Как исправить ошибку в редактировании сообщения?

    Vindicar
    @Vindicar
    await msg.edit("Abobus")
    В приведённом коде такой строки вообще нет, откуда это?
  • Как использовать текстовый документ в Selenium на python?

    Vindicar
    @Vindicar
    azukizxc, за готовым кодом туда.
    Сделай хотя бы черновой набросок, тогда можно будет что-то советовать.
  • Python FTP не могу подключиться как решить?

    Vindicar
    @Vindicar
    Александр Ананченко, а. Т.е. это просто в посте опечатка. У тебя второй параметр вместо port написано IP, вот я и подумал что ты не то передаёшь.
    Просто для надёжности уточню: точно ли на целевом хосте 95.181.157.90:21 поднят FTP и точно ли он доступен из внешней сети? Другие клиенты коннектятся?
  • Как чайнику победить certbot?

    Vindicar
    @Vindicar
    Алексей, у тебя certbot и веб-сервер на одной и той же машине крутятся? Если да, то порты тут ни причём - лишь бы запрос снаружи доходил до веб-сервера.
    А вот если на разных, то всё грустно. Либо разбираться, как делать DNS challenge - но это требует программирования, чтобы дергать API твоего DNS провайдера.
    Либо исхитряться, и монтировать каталог с одной машины на другую по сети.
    Честно, проще завести certbot там же, где веб-сервер.
  • Можно ли добавить 2 массива в цикл for?

    Vindicar
    @Vindicar
    Код немного косячный, перезаписывает a и b.
  • Как чайнику победить certbot?

    Vindicar
    @Vindicar
    Алексей, через конфиг - это один способ. Я использую lighttpd + dehydrated (клиент для letsencrypt), но принцип, имхо, один и тот же.
    Например, в конфиге lighttpd у меня есть строка
    alias.url += ( "/.well-known/acme-challenge" => "/home/letsencrypt/dehydrated/.acme-challenges" )

    которая редиректит все challenge-запросы в директорию, с которой работает dehydrated.
    Но имхо то же самое можно было бы сделать, поместив в /var/www/.well-known симлинк по имени acme-challenge, указывающий на каталог /home/letsencrypt/dehydrated/.acme-challenges .
    Конечная цель одна - чтобы HTTP-запрос по URL /.well-known/acme-challenge/чтототам добирался до каталога, с которым работает твой certbot.
  • Как чайнику победить certbot?

    Vindicar
    @Vindicar
    Алексей, ты используешь challenge вида HTTP, т.е. тебе нужно иметь поднятый веб-сервер, который готов ответить на запрос issuer'а сертификатов заранее оговоренным ответом (чтобы доказать что ты владеешь доменом, на который выдается сертификат). Как правило, скрипт типа certbot'а указывает/позволяет задать директорию, в которую он будет помещать ответы на challenge. Твоя задача - настроить веб-сервер так, чтобы эта директория была доступна по указанному URL, либо подсунув её в корневой каталог веб-сервера через симлинки, либо настроив url_rewrite, либо ещё как.
    Альтернатива - DNS challenge, где тебе потребуется по запросу скрипта создать в домене TXT запись с указанным именем и содержимым. Если твой DNS-хостер предоставляет API для программного управления записями в домене, можно попробовать его. Но HTTP challenge проще для понимания, хотя и требует наличия вебсервера.
  • Как очистить поле ввода в Tkinter?

    Vindicar
    @Vindicar
    Артём Д, английский знаете? Если нет, вставьте в гуглопереводчик get и insert. Сразу станет понятно. X)
    get (получить) возвращает текущее содержимое поля ввода, insert (вставить) вставляет строку в указанное место текущего содержимого. Если содержимого нет, то можно вставить в начало (позиция 0), тем самым задав это содержимое.
  • Поиск списка в базе данных, как осуществить?

    Vindicar
    @Vindicar
    artemk1ter, проблематично, так как в IN придётся передавать список значений. Хотя это можно обойти, синтезировав текст запроса самому.
    cursor.execute("SELECT word FROM words WHERE word in (" + ','.join(['?']*len(wordlist)) + ");", wordlist)

    При таком подходе можно wordlist подвергнуть предварительной чистке - выкинуть предлоги и союзы, привести к нужному регистру, ну и т.п.
  • Ошибка при рассылке на юзеров,что может быть?

    Vindicar
    @Vindicar
    volodik587, ну да, но имей ввиду, у тебя еще и цикл есть
    for user in result:
    Он тоже сломается.
    Просто имей ввиду что у тебя только один список id юзеров, и перепиши код с учетом этого.
  • Ошибка при рассылке на юзеров,что может быть?

    Vindicar
    @Vindicar
    volodik587, причем тут это?
    Я написал в чём проблема. Из-за двойного вызова .fetchall() в call_sp будет пустой список вместо результата запроса. Проверь и убедись. А дальше ты пытаешься обратиться к нулевому элементу этого пустого списка и ловишь эксепшен.
  • Как получить из JSON строки int и float?

    Vindicar
    @Vindicar
    Вообще с такими задачами иди на фриланс. Но я сегодня добрый, дам небольшой стартер.
    import csv
    import json
    # описываем преобразования типов
    noop = lambda s: s #неизвестные поля оставляем строкой
    transforms = {
        #"FileName": str, #что нужно оставить строкой, можно не указывать
        "terse_version_3": int,
        "fio_version": str,
        "jobname": str,
        "read_runtime_ms": int,
        # и так далее, для каждого поля
    }
    
    data = [] #список с данными из csv
    with open('source.csv', 'rt', encoding='utf-8', newline='') as csvfile:
        reader = csv.DictReader(csvfile, delimiter=';')
        #грузим строки из csv файла как словари
        #первая строка файла определит имена колонок!
        #настройки формата csv (разделитель и всё такое) - см. справку питона
        for row in reader: 
            transformed_row = {}
            for key, value in row.items():
                transform = transforms.get(key, noop) #как преобразовывать?
                try:
                    # преобразовываем строку в значение
                    transformed_row[key] = transform(value)
                except: #что ты хочешь сделать с некорректными значениями?
                    transformed_row[key] = "" 
            data.append(transformed_row)
    #структура данных готова, осталось сдампить в JSON
    #если нужно вывести в файл
    with open('result.json', 'wt', encoding='utf-8') as dst:
        json.dump(data, dst, ensure_ascii=False)
    #если нужна именно строка
    data_str = json.dumps(data, ensure_ascii=False)


    Дорабатывай и отлаживай сам.
  • Как сохранять данные и работать с ними?

    Vindicar
    @Vindicar
    Python Новичок, sqlite3 встроен в питон, и тебе при переносе скрипта на другое место достаточно будет скопировать файл с базой данных.
    Тогда как mysql требует отдельного mysql сервера, и перенос БД - дело не вполне тривиальное.
    Для начала sqlite3 всё же удобнее. Но если ожидаешь больших объемов (миллионы строк) то тогда да, sqlite брать не стоит.
    Учить SQL тебе придётся самому всё равно.
  • Почему heroku не видит ttf файл?

    Vindicar
    @Vindicar
    Anton, я фз какой рабочий каталог у бота на хероку.
    Но я точно знаю, что sys.argv[0] хранит путь к скрипту.
    Так что используя os.path.dirname() + os.path.combine() или их аналоги из pathlib, можно переделать этот путь в путь до нужного файла.
    И тогда не важно какой рабочий каталог, неважно, по какому пути лежит скрипт - если положение файла относителньо скрипта неизменно, он будет найден.
  • Почему Питон не запоминает значение из списка после выхода из цикла?

    Vindicar
    @Vindicar
    aftnia11, можно
    а) не использовать with, а вызвать метод file.close() вручную
    б) поместить цикл внутри with, что проще и надежнее.
  • Почему Питон не запоминает значение из списка после выхода из цикла?

    Vindicar
    @Vindicar
    aftnia11, см. выше. Ты можешь либо вручную изменять значение q_Stream, либо, что проще, не закрывать FirstStream.txt, а читать из него построчно. Всё равно файл отслеживает текущую позицию чтения.
  • QWidget: Must construct a QApplication before a QWidget?

    Vindicar
    @Vindicar
    В твоем скрипте должен быть один и только один экзепляр QApplication(). Думай сам, где ему место. Можно создавать его в главном файле.