Ответы пользователя по тегу Python
  • Как перевести все изображения в pdf?

    mayton2019
    @mayton2019
    Bigdata Engineer
    $ convert picture1.jpg picture2.jpg out.pdf
    Ответ написан
  • Подойдет ли для парсинга сайта Амазон библиотека Selenium Stealth на Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты не задаешь вопроса а просто закидываешь дискуссию.

    Напиши код. Хотя-бы превед-мир на Sel-Stealth и найди какой-то дефект и приходи с ним сюда обсуждать.
    Тогда будет какой-то конструктив. А так чего мы здесь?
    Ответ написан
    Комментировать
  • Текстовый калькулятор на Python. Как реализовать поддержку деления?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А что здесь думать? Ты же не реализовываешь алгоритмы умножения и деления.
    Ты - пользователь Питона. Вот и дели на Питоне и округляй.

    Вот если бы ты реализовал 1/3 + 2/3 и получил бы точно единицу вот это было бы
    интересно и познавательно.
    Ответ написан
    Комментировать
  • Как сделать словарь?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Задача состоит из двух частей. Первое это чтение документа по словам. Вот как тут пишут
    https://www.geeksforgeeks.org/python-program-to-re...

    И второе, когда поток слов уже есть - добавить их в словарь с генерацией порядкового номера.
    num = 0
    word_dict = {}
    
    // в теле цикла
    if not (word in word_dict):
      word_dict[num] = word
      num = num + 1
    Ответ написан
    Комментировать
  • Как установить Python 3.9.6 на Ubuntu 20.04 LTS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для установки специфичных версий Python можно использовать conda https://docs.conda.io/en/latest/
    Это удобно особенно, для понижения версий софта. И вообще можно иметь бесконечное
    число конфигураций Питона под разный софт.
    Ответ написан
    Комментировать
  • Есть код на питоне как можно ускорить его мультипроцессность не работает?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот в один поток на сях. Только сам скомпилируй. 32 млн строк в секунду. Если писать в /dev/null

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    // habr.com : mayton2019 - 3 Sep 2023
    
    char *hex = "0123456789abcdef";
    char *buf;
    
    void streamer(int max_depth, int level, char *alphabet, int alphabet_size) {
       for(int i = 0 ; i < alphabet_size ; i++) {
          buf[level] = alphabet[i];   
          if ( level < max_depth ) {
            streamer(max_depth, level+1, alphabet, alphabet_size);
          } else {
            buf[level] = '\0';
            printf("%s\n", buf);
            break;
          }
       }
    }
    
    int main(int argc, char** argv) {
      buf = malloc(strlen(hex) + 1);
      streamer(16, 0, hex, strlen(hex));
      free(buf);
      return 0;
    }


    Вот как я мерял.
    gcc hex-gen.c -o hex-gen.exe && ./hex-gen.exe | pv -l -r > /dev/null
    [30.7M/s]
    [30.1M/s]
    [30.3M/s]


    Вот если писать в текстовый файл то скорость чуть медленнее. 24 млн строк за секунду.

    Вот. Проверяй данные. Что я нигде не ошибся.

    UPD: Лишний ноль убрал.
    UPD: +break добавил.
    Ответ написан
    Комментировать
  • Как посчитать разницу между датами(%Y, %m, %d, %Н, %M, %S)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В феврале всегда 28 дней. Использую datetime.

    Ну все стандартные библиотеки используют астрономические формулы. Там число дней
    в году расчитывается по формуле високосного года. И вряд-ли эту формулу можно изменять.
    Ну я такого не встречал нигде. Так что выход у тебя один - искать любую реализацию
    этой формулы в python и вносить туда ручные корректировки.

    Не пойму зачем тебе накое надо.
    Ответ написан
  • Как быстро распарсить много json файлов на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А почему ты решил что парсинг это узкое место? Ты пишешь информацию в базу. Тоесть у тебя конвейер операций.
    И я думаю что до того как начинать оптимизацию, надо собрать логи по таймингам. Сколько милисекунд занимет
    чистый парсинг и сколько запись в БД.

    Попробуй еще простой параллелизм. Разбей эти 8000 файлов на 2 фолдера по 4000.
    И запусти 2 python-процесса. Будет допустим не 5 часов а 3 часа. Уже лучше.
    Продолжнай дробить пока удельная скорость обработки не деградирует.
    Ответ написан
    2 комментария
  • Поиск по большим файлам python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) Ну. Как бы я делал. Наверное проще загрузить это в SQLite и проиндексировать. Как то так.

    file.csv
    id;name;phone;price
    1;Игорь;79287777777;20
    2; Дмитрий;79287777888;25
    ...

    В базе
    sqlite> create table tab1(id text,name text,phone text,price text);
    sqlite> .mode csv
    sqlite> .separator ";"
    sqlite> .headers off
    sqlite> .import file.csv tab1

    Это одноразовая операция и ее можно сделать вручную.
    Желательно создать композитный индекс по 2 полям
    sqlite> create index idx1 on tab1(name,price);
    А дальше из python подключиться к SQLite и гонять запросы вида
    SELECT * from tab1 WHER name='Игорь' AND price='20'


    2) Можно еще придумать сценарий с загрузкой таблицы в Python dictionary но это наверное
    увеличит нагрузку на память. Может вместо 2Гб будет 10Гб. Who knows! Вобщем это повод для
    экспериментов с замером памяти. Кроме того dictionary жестко нас привяжет к полям name + price
    и это будет неудобно.
    Ответ написан
    Комментировать
  • Как можно удалить фон или получить координаты кругов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Ты правильно выбрал преобразование Хафа для кругов (окружностей). Только у тебя должен
    быть pipeline из последовательного применения фильтров.

    1) Сначала обесцветить картинку.
    2) Применить фильтр границ. На этом этапе круги появятся
    3) Ты заранее знаешь диаметр круга - желательно его вбить в настройки чтоб Хаф не искал все-все радиусы
    которые возможны.
    4) Ну и далее - твой метод должен их найти.
    Ответ написан
    3 комментария
  • Как произвести сортировку в таблице SQLite3, после удаления записи?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Все базы данных хранят строки не так как Excel. Хранят как предписано в файловом
    формате для целевой DBMS. Когда удаляешь - обычно
    остаются дырки которые потом заполняются другими строками. Но это я упрощенно рассказываю.
    В реальности все еще сложнее. И есть процессы вакуума или другой релокации строк. И таблица
    может двигаться в памяти. Шаффлиться. Делиться на части. Кластеризоваться и т.п.

    Поэтому твоя хотелка достигается только с использованием order by.

    Все остальные способы не работают потому что язык SQL не дает никаких гарантий относительно
    физического упорядочивания строк.

    UPD: Для авто-нумерации https://stackoverflow.com/questions/16847574/how-t...
    Ответ написан
    Комментировать
  • Как сделать так, чтобы данные, которые я пишу в тг бота, заполняли сперва первую строчку в таблице postgre?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну в базах данных так не делают. Обычно все колонки именованы и имеют смысл.

    У тебя есть два варианта КМК. Можно провести еще один сеанс нормализации и сделать табличку
    так.

    id| q  | value
    1 | q1 | 1111....
    1 | q2 | 2222....
    1 | q3 | 3333333
    2 | q1 |......


    или сделать value как JSON и складывать туда массив

    id| json_value
    1 | [ "11111", "2222", "333333" ....]
    Ответ написан
    Комментировать
  • Не могу разобраться как работает код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот так работают.

    >>> for i in range(4):
    ...         x = (i % 2)
    ...         y = (i // 2)
    ...         print("i=", i, " x=", x, " y=",y)
    ...
    i= 0  x= 0  y= 0
    i= 1  x= 1  y= 0
    i= 2  x= 0  y= 1
    i= 3  x= 1  y= 1
    Ответ написан
    6 комментариев
  • Как в Python перейти на другой диск?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Попробуй так

    os.chdir('d:/Downloads')
    Ответ написан
    Комментировать
  • Как убрать ввод исходных чисел и операций при тестировании программы на python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Берешь текстовый файл input.txt и записываешь в него все текстовые вводы. В том числе с переводами строк.
    Потом запускаешь примерно так

    $ python3 app.py < input.txt
    Ответ написан
  • Почему не выводится график регрессий?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Распечатай на экране точки через которые должна пройти линия регрессии. Скорее всего она вылетает за
    границы масштаба поэтому ее просто не видно.

    Вообще не понимаю на что ты расчитываешь делая такой черный ящик. Занялся машинным обучением - выводи
    каждый шаг. Объем выборки. Кусок дата-сета хотя-бы покажи. У тебя ведь нет даже expectations относительно
    того как должны выглядеть эти линии.
    Ответ написан
    Комментировать
  • Как запустить Python приложения на хостинге с Cpanel?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Пишет что нет модуля aiogram. Установи.
    Ответ написан
    Комментировать
  • Как конвертировать ogg в mp3 python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не для Питона. Для bash я использовал комбинацию из ffmpeg + lame

    ffmpeg -acodec libvorbis -i "$i" -acodec pcm_s16le

    lame [options] <infile> [outfile]

    Там кажется можно исхитриться и сделать pipeline чтоб не создавать промежуточный wav файл. Но навскидку
    я не помню как. Вот. Далее вызвать из Питона эти утилиты.
    Ответ написан
    Комментировать
  • Как vk_боту с помощью Python скачать изображение?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почему вы Питонисты никогда не обрабатываете коды ошибок http?
    def download_file(url, path):
        response = requests.get(url)
        with open(path, "wb") as f:
            f.write(response.content)


    request.get - возвращает статус. Это может быть 300-тка. Ошибка клиента. 400-тка. Секюрити. Или 500-тка
    баги на сервере. Вот что у тебя пришло?
    Ответ написан
  • Как определить, где запущен код python - в PyCharm или в Google Colab?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно все процессы (и питонские и прочие) запускаются в виде Linux процесса в окружении
    переменных environment.

    Сравни наборы переменных вот как тут пишут
    https://stackoverflow.com/questions/4906977/how-ca...
    Ответ написан