Ответы пользователя по тегу Python
  • Как правильно писать код на питоне со многими функциями?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно делают функцию main, которая принимает строковые параметры типа:

    $ python3 jrbro.py --sortFolder /home/jrbro
    Ответ написан
    Комментировать
  • Как найти строки в файлах и изменить их с помощью python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе нужно каждый файл на лету распаковывать читать построчно. Применять к строке замену. И создавать файл-копию и тут-же писать в него и запаковывать обратно.

    Оригиналы архивов потом можно удалить. Лучше всего это делать в разных директориях чтоб не запутаться.
    Ответ написан
    Комментировать
  • Код не видит десятичные числа?

    mayton2019
    @mayton2019
    Bigdata Engineer
    При такой постановке задачи можно оставить только 1 предикат.
    if answer=='18':
    А все остальное всегда идет по линии else. И сравнивать строки даже можно.
    Ответ написан
    Комментировать
  • Как найти разработчиков python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот какой-то ресурс есть https://peps.python.org/

    Насколько я понял Pep - это аналог Java JEPs. Вобщем надо читать нудные рекомендации по внесению предложений. Хороший этап. Это так сразу... чтобы отсесять 99% инноваторов. Те кто выживут - достойны того чтоб их послушать :)
    Ответ написан
    Комментировать
  • Не удаляет данные из бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Надо проверить следующее.
    1) Вот эта штука возвращает число удаленных строк
    cur.execute ('DELETE FROM memorycfcb WHERE name = %s', (data,))

    проверь что там хотя-бы не ноль. Вообще - всегда проверяй коды состояний API.

    Любого API. И зимой и летом проверяй. Это просто как чистить зубы по утрам.

    2) Проверь что режим autocommit включен.
    Ответ написан
  • Где ошибка в коде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зачем кавычки обрамляют bind-переменные?

    """INSERT INTO memcfc (photo , name , discription) VALUES
            (' ? ',' ? ',' ? '); """ , tuple(data.values()))
    Ответ написан
  • Как рандомно расположить объекты без пересечений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В промышленности есть задача под названием "Оптимальный раскрой". Не знаю как это делать в Pygame, но это обобщенная постановка для фигур произвольной формы на плоскости. Например - заготовок изделий на листе металла.
    Ответ написан
  • Где применяют python помимо веба и data science?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Питон активно применяется инженерами НЕ из сегмента It. Химиками. Физиками. Металлургами. Строителями.

    Жестокая ирония но часто его выбирают не по желанию а потому что ничего другого бесплатного под рукой не оказалось. Вот отсюда и проистекает его широкое распространение. А по рейтингам tiobe, он перегнал С++ и Java.

    Тоесть реально на вопрос "где" можно ответить - "везде".
    Ответ написан
    Комментировать
  • Ошибка с данными. invalid literal for int() with base 10: ''?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот здесь в скобочках
    if int(i[0])==int(ch_id) and int(mesid)>int(i[1]):
    идет попытка кастовать строку в число десятичной системы но неудачно. Видимо строковый литерал не похож на число.

    Воспроизведение подобной ошибки
    >>> int("555")
    555
    >>> int("555x")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: '555x'
    Ответ написан
    Комментировать
  • Как можно определить что цвет относится к синему (оттенки синего)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В базисе RGB тоже можно посчитать. Сначала выбирай центр кластера. Эталонный синий с которым хочешь сравнивать. Дальше для всех цветов считай просто декартово расстояние. И если допустим оно будет меньше какой-то величины- то близко к эталону. Вот неполный пример на другом языке. Можно как-то дописать на Python.

    public double getDistance(int color1,int color2) {
            double rv = 0.299 * (getRPixel(color1) - getRPixel(color2));
            double gv = 0.587 * (getGPixel(color1) - getGPixel(color2));
            double bv = 0.114 * (getBPixel(color1) - getBPixel(color2));
            return sqrt(rv * rv + gv * gv + bv * bv);
    }


    Можно выбрать базис HSV, тогда для похожести брать измерение H (Hue) как эталон.
    Но цветовой тон - вращается. Тоесть надо учитывать его как часовую стрелку например без 5 минут 12
    близко к без 15 минут и к 12:05 одинаково.
    Ответ написан
    Комментировать
  • Где ошибка в коде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри чистым взглядом на то что ты скачиваешь

    $ wget https://api.bittrex.com/api/v1.1/public/getticker?market=USD-BTC


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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот как-то так. Возможно некрасиво.
    >>> dict = {
      ...   "a": "1",
      ...   "b": "2",
      ...   "dict2": {
      ...     "c": "3",
      ...     "d": "4",
      ...   }
      ... }
      >>> 
      >>> for i in dict:
      ...   print(type(dict[i]))
      ... 
      <class 'str'>
      <class 'str'>
      <class 'dict'>
    Ответ написан
    Комментировать
  • Sqlite3.OperationalError: near "слово": syntax error?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В SQL обычно одинарные кавычки используются для строковых литералов.

    DELETE from books WHERE us_books = 'слово' .....

    Двойные там для других задач. Например для приведения идентификаторов к CASE-sensitive виду.- Типа "MyTable"
    Ответ написан
    Комментировать
  • Как писать код? Монолитный .py файл. Или лучше раздельно, импортируя свои же .py, .json, .txt файлы, как в гитхабе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Большинству людей глубоко наплевать на то как выглядит код программиста. До тех пор пока он - одиночка-фрилансер.

    Как только вы начинаете работать в паре с кем-то, или в команде, или просто хотите поделиться чем-то в форумах или в GitHub - вот с ЭТОГО момента начинается публичный дискурс вокруг внешнего вида.

    Есть такое отдельное понятие - "Эстетика программного кода". Оно - неформализуемо и никто не может дать четких определений какой код эстетичен а какой - нет. Я считаю что только долгий опыт работы в команде с другими людьми позволяет определить для себя эстетику.

    Но стартовой точкой в этом вопросе может быть чтение книги Роберта Мартина - Чистый код. Там описаны достаточно простые и очевидные вещи типа как оформить комментарии к коду или сколько строк должна иметь функция. Но начать с нее стоит. По крайней мере чтобы в приличном обществе выглядеть джентльменом.
    Ответ написан
    Комментировать
  • Как начать парсинг csv с нужной строки?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если csv.reader поддерживает интерфейс iterable то можно сделать фильтр как тут пишут https://learnpython.com/blog/map-filter-reduce-python/

    filter(function, iterable)
    Ответ написан
    Комментировать
  • Чем асинхронность лучше многопоточности для чат-бота?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насчет чят бота не скажу. Вообще скажу.

    Если задача связана с вычислением численных метдов например. Или рендерингом 3D. Или крипто-майнингом. Или нейро-сетей - где
    CPU -> 100%, I/O -> 0% то тогда тебе прямая дорого в мультипоточность (мультипроцессность). Количество тредов расчитывается обычно по формуле = количество ядер (иногда АЛУ/Threads) умноженное на коєффициентик. Подбирается экспериментально для конфигурации и среды исполнения. У меня для Java-11 выходило что на 4 ядра Core-i3 надо было 5 вычислительных потоков.

    Если в задаче главным дирижёром является канал I/O а нагрузка на расчет малаая (парсер) - то используют технологи асинхронизма. Это когда ваши вычисления подписываются на события I/O и 80% времени ничего не делают а только ждут события от I/O. При благоприятных условиях хендлеры могут потреблять вообще 0% ресурсов. Нет событий. Поэтому таких хендлеров можно поднять очень много. Пример - акторные технологии. Хендлер. Актор. Горутина. Пример 10 000 акторов обслуживается 10 потоками исполнителями.
    Ответ написан
    2 комментария
  • Раньше, файл создавался сам, а теперь перестал, почему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обработай Exception

    except Exception as e:
            print 'Reason: ' + e.errno
    Ответ написан
    Комментировать
  • Как правильно написать мультипоточность на питоне?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Blankspace у

    1) тебя все задачи - независимые. Ты можешь запускать 6 отдельных процессов на Python. В таком случае тебе не надо думать о синхронизации потоков.
    2) ты описал задачу максимальной утилизации ресурсов. Это - неверная задача. Это все равно что ты захотел сжечь побольше бензина. Цель - быстрее закончить парсинг N сайтов например используя M proxy серверов.
    3) Твой вопрос
    Сколько максимально я могу парсить сайтов по такой схеме, ориентируясь на мощность процессора

    Ответ - никто не знает. Не существует такой расчетной формулы. Есть скорее сет экспериментов которые ты сам будешь запускать на своей конфигурации и в зависимости от параметров (M,N) и получать результирующее время в секундах или в минутах. Процессорные мощности здесь скорее всего нипричем. Здесь сильнее влияет канал ввода вывода. Тоесть скорость сети и скорость с которой ты сохраняешь на диск разобранные данные.

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

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

    Почитай также про закон Амдала. Он сработает в твоём случае.
    Ответ написан
    Комментировать
  • Как скачать файл скрипта с сайта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если разрешать качать back-скрипты - то это был-бы взлом всех веб-ресурсов.
    Ответ написан
    Комментировать
  • Как получить кол-во атрибутов класса и передать атрибуты в словарь?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю как устроен Renpy но доменная модель совершенно не продуманная. Можно создать базовый тип для "персонажа". Имя там... возраст. И производные от него указать.

    Мы-же в парадигме ООП работаем, верно?
    Ответ написан