• Код почему то запускаеться 5 раз хотя такого не должно быть в чем может быть проблема?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    А что вас удивляет? Все работает как написано.
    SQL-запрос вернул 5 записей, вы перебираете их циклом, в котором при первом проходе выполняется некий код с инвентарем, а на остальных четырех проходах i=1 и срабатывает негативная ветка, где печатается символ нуля.
    Судя по тому, как вы неправильно пользуетесь шаблонной строкой и какой вопрос задаете, вы далеки от программирования. Надо подучиться питну и основам алгоритмизации.
    А еще так подставлять параметры в запрос опасно, нужно передавать их отдельно в execute.
    Ответ написан
    1 комментарий
  • Как распазнать черные точки на картинке?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А как вы пытались решить эту задачу? Поисковик выдаёт решение в первой строчке. Вы искали?
    https://www.google.com/search?q=opencv+%D0%BF%D0%B...
    Это не сайт для фриланса, тут отвечают на вопросы и помогают с кодом, если что-то не получается. Если вы и не пытались решать задачу, то вам не сюда.
    Написали бы хотя бы рассуждения.
    Складывается впечатление, что вы не пытаетесь сами научиться решать такие задачи, а хотите чтобы кто-то сделал для вас готовый код.
    Ответ написан
  • Почему удаляются данные из переменной?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Почему после создания словаря(row_sort)..

    В коде нет переменной row_sort. Читайте внимательно.

    .. в переменной row пусто?

    В коде нет переменной row. Читайте внимательно.

    Что вы хотите сделать этой строчкой? print(*rows)
    В перемнную rows кладётся CSV-ридер:
    rows = csv.DictReader(file_in, delimiter=",")
    Это объект-генератор, который выдаёт строки из CSV-файла. Но вы все строки из него достали вот в этой строке кода:
    rows_sort = {i["email"].split("@")[1]: 0 for i in rows}

    Это значит, что этот генератор теперь пуст и при попытке превратить его в кортеж (то есть распаковать звёздочкой в аргументы функции), он возвратит пустой кортеж, ведь генератор останавливает итерацию сразу, файл вычитан полностью.
    Ответ написан
    2 комментария
  • После переименования файлов на Python удаляются файлы, как починить?

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вам бы, сударь, основы алгоритмизации подучить. Так не пойдёт.
    А тем, кто набредёт на вопрос, могу предложить задачу - сделать это односточником.

    Решение тут:
    spoiler

    functools.reduce(lambda a, b: a and b, filter(lambda line: word in line, open('файл.log')))

    Упадёт с ошибкой, если строк со словом в файле нет.
    Ответ написан
    Комментировать
  • Pycharm не подсказывает код по opencv-python, как исправить?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Говорят вот хардлинком библиотеки лечат https://stackoverflow.com/questions/5049842/autoco...
    Ответ написан
    Комментировать
  • SSH туннель, как получить доступ к приватному компу за нат с сервера на котором поднят туннель?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    https://habr.com/ru/post/331348/
    https://habr.com/ru/post/81607/
    https://habr.com/ru/post/435546/
    https://habr.com/ru/post/249515/
    Это ж как вас угораздило быть забаненным в гугле и яндексе одновременно?

    Вы можете пробросить любой порт обратным прокси с занатновой машиной на впс.
    Или расшифруйте уж подробнее что имеете в виду под "получить доступ к компу за нат с ВПС".
    И да, вам правильно в комментариях говорят, не надо изголяться, а надо использовать VPN и все ваши компы будут в одной сети.
    Ответ написан
  • Возмодно ли любым способом скачать pysharm на андроид?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Скачать можете, установить и запустить не получится.
    Но можно арендовать VDS на одном из многочисленных хостингов, ставьте туда ОС, например убунту или лучше что-то менее прожорливое. Ну и там можно поставить пичарм. Работать придётся через удаленный десктоп, что не чень комфортно.

    Можно поискать подходящую вам браузерную IDE.
    https://visualstudio.microsoft.com/services/visual...
    https://github.com/features/codespaces
    Ответ написан
    Комментировать
  • Данный вопрос уже был, но это другое. Как боту отправить сообщение пользователю, зная его id?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А в чем проблема, собственно? Фактически у вас два бота: один для клиента, другой для менеджера.
    Я бы это реализовывал как отдельные сервисы, которые между собой обменивались бы информацией через БД.
    Обычно клиентов больше, чем менеджеров и у ботов разная функциональность. Нет смысла пихать её в одно приложение.
    Заменяйте БД на постгрес, поднимаете ботов и БД в разных докер-контейнерах.
    Клиент сделал заказ, заказ упал в таблицу заказов со статусом "не обработан".
    Бот менеджера время от времени проверяет наличие необработанных заказов в бд и присыдает сообщения о них менеджерам.
    Ответ написан
  • Почему SQL запрос ничего не возвращает?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Потому, что last_time вы извлекаете без учета client_id, а потом добавляете это ограничение и, очевидно, по этому пользователю не было ни одной записи за эти секунды, а были по другому пользователю.

    но говнокод тот еще, конечно. Не удивительно, что для вас не прозрачна причина такого поведения кода, когда он так плохо написан.

    Короче, в первом зпросе забыли добавить "WHERE client_id =..."
    Ответ написан
  • Существует ли компилятор в BASH?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    До чего же много извращенцев всяких в интернете.
    Ваш странный вопрос легко гуглится https://github.com/jcampbell05/bashjs
    Ответ написан
    Комментировать
  • У меня на удаленном VDS работает сайт НЕ в докере, могу ли я как-то удаленное окружение самостоятельно поместить в докер, и запустить локально?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Для пошагового гайда или даже более-менее полезного ответа вы не предоставили почти никаких данных.
    Смысл докера в изоляции отдельных сервисов и программ в отдельных контейнерах так, чтобы они не конфликтовали за ресурсы (порты, файловую систему, зависимости от библиотек) и никак не мешали друг другу.
    LAMP - это линукс, апач, mysql, php. Если всё делать в докере, то у вас будет отдельный контейнер для БД. Его можно без изменений брать с докерхаба стандартный.
    Не разбираюсь в этих ваших ПХП, но если бы бэк у меня был на питоне, я бы использовал nginx и тоже подняол бы его в отдельном контейнере. ьно бэкенд тоже поднимал бы в отдельном контейнере. Всё это оркестрировал бы докер-компоцзом.
    Вам следет пойти на гитхаб и поискать пример LAMPовых проектов, с компоуз-файлом. Какие-нибудь популярные, простые и звездатые. Там и подсмотрите как организовать всё.

    Просто брать всё что у вас на ВПС и пихать в один контейнер смысла нет.
    Ответ написан
    3 комментария
  • OpenCV Python. Как работают координаты прямоугольника?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В любой документации, гуглится с первой попытки.
    Это координаты противоположных углов прямоугольника.
    Ответ написан
  • Как организовать одновременную работу Telegram бота (Aiogram) и Flask?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Не надо их смешивать. Просто сделайте отдельно и пусть подключаются к одной БД. Так будет и надёжнее, и безопаснее, и призводительность будет выше, и проще всё это будет устроено, что не мало важно.
    Даже запускал бы я эти процессы в разных докер-контейнерах. Микросервисаня архитектура, масштабирование, прозрачность, элегантность и гибкость.
    Стартуете всё одним compose-файлом, а если будет не хватать в будущем, то куберовский кластер можно будет пристегнуть и нигде не упрётесь в нестандартные проблемы.

    Не изобретайте себе приключения на пустом месте.
    Ответ написан
    2 комментария
  • Закрывается ли в таком случае поток и невредно ли так делать?

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    У вас в таком случае может возникнуть нестыковка. Нужно определиться о каком времени идет речь: о том, что указано в имени файла, или о дате\времени создания каталога?
    Переименование каталога может нарушить работу вашего алгоритма.
    Как я понял вас бы устроила сортировка по тому времени, что указано в имени файла.

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

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    К соседнему ответу могу добавить.
    Если Id у вас формируется автоинкрементом, то можо ограничить выдачу select-запроса одним элементом и указать обратный порядок сортировки по нужному вам полю.
    Ответ написан
    Комментировать
  • Как округлить число на python до сотых?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Напомню на всякий случай, что не каждое десятичное число можно представить конечным количеством двоичных знаков. Это как 1\3 в троичной системе будет просто 0.1, а в десятичной 0.333(3).
    Это значит, что округлять с помощью round не всегда хорошая идея.
    К примеру, десятичное число 0.2 предствляется периодической бинарной дробью.
    Смотрите:
    In [1]: f'{0.2:.30f}'                                                          
    Out[1]: '0.200000000000000011102230246252'

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

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А в чем, собственно, проблема? Веб-интерфейс - нормальный вариант. Сделайте его бэкенд на flask, фронтом будет простенькая страничка. Можно в рамках MVP аставить её обновляться с некоторой периодичностью, а можно перезагружать только одну картинку. Потом уже можно и вебсокеты прикрутить, если чем-то не устроит простой вариант, чтобы пуши с сервера прилетали и всё такое, но зачем?
    Ответ написан
    Комментировать
  • Как разбить строку на спискок?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Не стоит изобретать велоссипедов.
    В современном питоне есть замечательный модуль pathlib, который отлично работает с путями, файлами и директориями. Там есть всё, что нужно дл яправильной работы.

    Если нужно работать с неродными для вашей оерационной системы путями (например виндовыми из под линукса), то там есть специальный класс для этого:
    > p = pathlib.PureWindowsPath("E:\python\pycharm\fl\exel\ids.xlsx") 
    > p.parts
    ('E:\\', 'python', 'pycharm\x0cl', 'exel', 'ids.xlsx')

    Если вы работаете с путями нативно, то ещё прозе, модуль сам будет спользовать нужные классы:
    > p = pathlib.Path("E:\python\pycharm\fl\exel\ids.xlsx") 
    > p.parts
    ('E:\\', 'python', 'pycharm\x0cl', 'exel', 'ids.xlsx')

    Но под линукс такой код не поймёт чего вы от него хотите при передаче винлового пути. Для линукса это просто одно имя в текущем каталоге (слеши не те, двоеточие допустимо для употребления в имени).
    Ответ написан
    Комментировать