• Как вытащить нужные данные из файла?

    trapwalker
    @trapwalker Куратор тега Python
    Этот пример является валидным yaml-ом. Можно парсить без изменений=)
  • Как вытащить нужные данные из файла?

    trapwalker
    @trapwalker Куратор тега Python
    Почему это не может быть? Вот же автор вопроса привёл пример. Почему вы считаете, что какой-нибудь ПХП скрипт не плюётся вот такой хернистикой именно вот в таком виде куда-нибудь в логи? Вполне может. И что, автору вопроса вручную исправлять каждую строку? А если их миллионы?
  • Как работать с БД из другого класса?

    trapwalker
    @trapwalker Куратор тега Python
    Stas_VTK, обычно открытый коннект не несет заметных накладных расходов, но их количество стараются ограничить.
    Для этого часто используют так называемые "ленивые вычисления" и концепцию пулла соединений.
  • Как работать с БД из другого класса?

    trapwalker
    @trapwalker Куратор тега Python
    Правильность программы определяется не только её работоспособностью. В первую очередь вы пишете программу не для компьютера, а для человека, который будет её читать с различными целями от ревью до дебага, от рефакторинга до внедрения новых фич. Комп умеет понимать всякую кашу вроде машинных кодов или кода на брейнфаке, а все эти ООП, языки высокого уровня с утиной типизацией, синтаксический сахар - всё это чделано для людей, чтобы разделять сложность на части и что никто не подавился.
    но не всем нужны данные из sql сервера.

    Не сочтите меня душнилой занудным, но что вы называете "данными" в этом контексте? Данные лежат в БД, вы не храните их ни в классе ни в его экземпляре.
    В данном случае вы просто написали лишнего кода и наделали лишних структур. Тут не нужен класс, достаточно функции в отдельном модуле.
    Писаь код "про запас" с рассчетом, что он когда-нибудь пригодится - это одна из типичных ошибок новичка.
    Читайте больше чужого хорошего кода, чтобы учиться писать свой.
  • Как работать с БД из другого класса?

    trapwalker
    @trapwalker Куратор тега Python
    Мне кажется рано учить новичка плохому. У него и так оверинженеринг. Делает классы ради классов, сораняет состояние там, где оно не нужно, переусложняет.
    Для его примера не требтся выносить работу с БД в отдельный класс.
    В большинстве случаев достаточно сделать один коннект при инициализации приложения и хранитьего в контексте Application, что уже есть у бота. Причем объект, который возвращает pyodbc.connect, уже достаточно хорош для этого. Зачем его заворачивать в сотню тонких и бессмысленных обёрточек? Чтобы понизить прозрачность и читаемость кода?
  • Как расшифровать Exit code?

    trapwalker
    @trapwalker Куратор тега Python
    Marty1337, любая рекурсия должна иметь критерий остановки. Иначе это не рекурсия, а ошибка.
    Зачем проверять делимость на каждое число? Все четные можно исключить кроме 2, все кратные 3 кроме 3 и т.д. Вы же решаете задачу очень неэффективно.
  • Как расшифровать Exit code?

    trapwalker
    @trapwalker Куратор тега Python
    Marty1337, потому что плохо реализовали.
    Любую рекурсию можно заменить итеративным алгоритмом со стеком в качестве которого можно использовать тот же список.
    В таком случае в стеке у вас будет лежать не весь контекст функуии, а только одно значение. Это более экономно.
    Попробуйте описать алгоритм на человеческом и математическом языке, а потом уже беритесь писать программу. Складывается ощущение, что вы её пишете методом проб и ошибок.
    Прочитайте что такое "чистые функции" и что такое "побочный эффект" в этом контексте. Старайтесь писать чистые функции.
    Рекурсия в задачах вроде этой очень неэкономична. тем более, если вы ее не пытаетесь оптимизировать и экономично использовать стек.
    Нужно пользоваться встроенными питоновскими структурами данных вроде словарей, которые позволяют получать значение по ключу за ~O(1). На этом можно построить много оптимизаций
  • Почему search field не возвращает результат поиска?

    trapwalker
    @trapwalker
    Константин, ну и какой вывод? Неправильно происходит получение значения поисковой строки.
  • Народ что делать если не работает ивент?

    trapwalker
    @trapwalker
    Ponn1234, чтобы сайт их не скушал есть специальный тег, который защищает отступы в коде.
    Я вижу вы тег поставили, но в этом вашем коде сейчас отступы сделаны некорректно. Исправьте их.
    Распишите подробно почему вы считаете что что-то не работает, приведите детальный стек-трейс ошибок. Приведите полный код, чтобы можно было понять в чем проблема.
    Сейчас вы запостили синтаксически некорректный кусок кода и не объясняя никаких подробностей пытаетесь чтобы вам тут нагадали на кофейной гуще?
  • Как найти Vector2 позицию за объектом?

    trapwalker
    @trapwalker
    Попытался смотивировать как смог. Хочется довести, что это не рокетсайнс, а довольно простые вещи, которые преподаются в школе. Если вопрос задает школьник (что не исключено) и он еще не проходил векторы, то мои слова не должны уязвить его, ведь у него всё впереди, а если он хочет чуть забежать вперед, то всё в его силах.
    Если же человек давно или недавно закончил школу и не вынес оттуда довольно несложной темы, которая, вот, ему пригодилась в жизни, то не грех донести до человека, что хорошо бы разобраться в теме хотя бы задним числом, раз уж человек выбрал для себя занятие, связанное с программированием.
    Без таких основ дальше в этой отрасли никак.

    Так чтобы без мата и человек понял что вы умный а он тупой

    Тупые не озадачиваются поиском координат камеры в 3д.
    Если мой выпад смотивирует человека наверстать немного школьную программу, то я буду считать, что моя цель достигнута.
    А какова ваша цель, какова цель вашего комментария?
  • Как реализовать ДЗ по ООП?

    trapwalker
    @trapwalker Куратор тега Python
    print в методах - плохая идея. Не нужно там принтов. Максимум логгирование.
    Конструктор Line может принимать две точки, а не координаты по отдельности. И тут вы почему-то уже не пользуетесь тайпхинтингом.
    Мало того, что вы неверно считаете длину отрезка, так ещё и не возвращаете её в результате функции, а печатаете принтом. К тому же этот метод вполне может быть свойством. Добавьте декоратор @property и возвращайте значение. Подсказка: теорема пифагора.
    def length(self):
            print(f'Длина линии равна {self.p2.x - self.p1.x}')


    Shape - Абстрактный класс. Зачем ему конструктор и координаты не понятно чего.
    Опять же, зачем какая-то логика в абстрактном классе?
    class Shape():
        def __init__(self, x:float, y:float):
            self.x = x
            self.y = y
        
        def area(self):
            print('Площадь')
        
        def perimeter(self):
           print('Периметр')


    В Питоне есть модуль abc, который позволяет формально указать на абстрактность класса и абстрактность методов. Тогда попытавшись инстанцировать абстрактный класс вы получите ошибку.

    Зачем переопределять конструктор Square, если он наследуется от Line в неизменном виде?!
    class Square(Line, Shape):
        def __init__(self,x:float, y:float, x1: float, y1: float):
            self.x = x
            self.y = y
            self.x1 = x1
            self.y1 = y1

    Хотя если задуматься, то у квадрата стороны равны, а происзольная пара координат не может служить диагональю квадрата. Очевидно, что квадрат должен быть задан точкой (какого-то из углов или центра) и размером.

    А теперь вы зачем-то вызываете метод суперкласса. Это то же самое, что не делать вообще реализации в наследнике. То есть не перекрываете метод и он работает так же!
    def length(self):
            return super().length()

    Но в данном случае перекрывать надо, поскольку периметр квадрата вычисляется иначе.
    Знаете же как вычислить периметр квадрата?

    # class Rect():
    #     pass

    Прямоугольник можно унаследовать от Line и абстрактного Shape.
    Тогда положение и размер будут задаваться координатами диагонали, а периметр и площадь нужно будет переопределить вычислив иначе.

    # class Cube():
    #     pass

    Куб тоже можно задать точкой и размером, но точку надо уже трёхмерную, та двухмерная не подойдёт уже. Для трехмерной нужно делать отдельный класс или проапхрейдить ту точку добавив необязательную координату z.

    # class Shape():
    #     pass

    Если тут речь не идёт о сплайне, то, наверно, это абстрактный класс и его надо описывать выше.
  • Как эффективнее работать с файлом, к которому нужен постоянный доступ?

    trapwalker
    @trapwalker
    Если это для Windows - то пользователю не запрещается открывать его на ЧТЕНИЕ в текстовом редакторе в этот момент

    А что, если не для Windows, то запрещается?
    Чтоб не было 1 файла в петабайт.
    Такой точно нигде не откроешь.

    Петабайтные логи - это, конечно, не правильно, но что же может помешать где-нибудь открыть такой файл?=)
    Вообще, если надо читать то нет никакой разницы по использованию памяти какого размера файл нам нужно открыть, если нет необходимости его весь держать в памяти.
    Лог-файлы обычно содержат одну заись в одной строке, а это значит, что открывать его можно с любого смещения, искать ближайший абзац и смело показывать содержимое с этого места.
    С неограниченными логами обычно другая проблема: они забивают всё доступное пространство и потом при попытке записи при неправильной конфигурации и неправильной обработке ошибок может упасть весь процесс, а то и ещё соседние за собой прихватит.
    Редко где сейчас обрабатывают правильно ситуацию, когда у вас заканчиается место на диске. Обычно просто валятся со стек-трейсом.
    Ротация логов нужна в первую очередь для того, чтобы обезопасить сервер от переполнения раздела, куда смонтирован каталог для логов. Ну и во вторую очередь, чтобы не заморачиваться с регулярной чисткой ненужных уже неактуальных логов.
  • Как эффективнее работать с файлом, к которому нужен постоянный доступ?

    trapwalker
    @trapwalker
    Никита Каргин, нет, данные помещаются в файл по факту очередного заполнения буффера записи или по команде flush(). Можно хоть побайтово записывать.
  • Как удалить все строки до n через sed?

    trapwalker
    @trapwalker
    vladragone, там нет никаких типов, только строки.
    Выполните:
    tail -n +3 << temp
    Будет ошибка? Есди да, то публикуйте примеры файлов, на которых так вот у вас все не работает. А то гадай тут что у вас там не так. На моих примерах всё отлично сработало:
    $ py "range(10)" > f
    $ tail -n +$(grep -n "3" f | cut -d: -f1) f
    3
    4
    5
    6
    7
    8
    9
  • Как удалить все строки до n через sed?

    trapwalker
    @trapwalker
    А что выдаёт grep -n "string:" file2 | cut -d: -f1?
    Если число, то всё долно сработать верно, даже если во входном файле нет нужного числа строк.
  • Как удалить все строки до n через sed?

    trapwalker
    @trapwalker
    vladragone, а зачем вам переменная? Вычисляйте на месте:
    tail -n +$(echo 4) input_file
    Вместо "echo 4" будет команда получения нужного числа
  • Что почитать для реализации автоответчика в виде бота реагирующего только на слова (триггеры)?

    trapwalker
    @trapwalker Куратор тега Python
    Игорь Соколов, причем тут конкретный модуль? Вы пишете обработчик входящих сообщений, в нём как угодно анализируете код и при необходимости отправляете ответ от бота.

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

    trapwalker
    @trapwalker Куратор тега Python
    Модератор, а почему бы не блокировать публикацию кода без тега форматирования? Вроде ж и детектить не сложно, особенно питонячий код.
  • Как int из rect float?

    trapwalker
    @trapwalker
    Оформите код правильно, как это требуют правила этого ресурса.
    Расставьте запятые и переформулируйте вопрос грамотно. Сейчас невозможно понять что там за несвязный набор слов.
  • Как поменять тип данных на выходе из queryset модели?

    trapwalker
    @trapwalker
    С боевым режимом надо очень осторожно. Гарантировать ничего не буду. С миграциями вообще надо предельно осторожно.
    Возьмите бэкап боевой базы и попробуйте всё проделать там. Елси ничего несломается на тестовом стенде, то делайте на боевом