Ответы пользователя по тегу Python
  • Не могу понять что за ошибка?

    Tomio
    @Tomio
    backend developer (python, php)
    Ваша ошибка говорит о том, что у вас идет циклический импорт модуля eq.
    Попробуйте поменять конструкцию from operator import eq на import operator, и уже к методам и классам данного модуля обращаться через operator.eq
    Ответ написан
    Комментировать
  • Как использовать AsyncMock?

    Tomio
    @Tomio
    backend developer (python, php)
    Такая ошибка "AttributeError: 'coroutine' object has no attribute 'objects'" говорит о том, что вы пытаетесь получить и одновременно присвоить атрибут objects для объекта корутины. С ними такое не прокатывает) Вам нужно "выполнить" (то есть, применить ключевое слово await) корутину (сопрограмму) и получить уже какой-то ответ.
    Скорее всего, в вашем случае нужно написать как-то так:
    mock_bank_control = AsyncMock()
    objects = await mock_bank_control(return_value=[bank])
    Ответ написан
    Комментировать
  • Как сделать автоматический zip архиватор на python?

    Tomio
    @Tomio
    backend developer (python, php)
    import shutil
    
    output_filename = 'my_archive'
    dir_name = '/folder/to/archivate'
    shutil.make_archive(output_filename, 'zip', dir_name)


    На выходе у вас будет архив с названием 'my_archive.zip' и содержимым папки '/folder/to/archivate', включая все подпапки.
    Ответ написан
  • Как удалить элемент из списка списков (python)?

    Tomio
    @Tomio
    backend developer (python, php)
    Если точно известно, что это именно список из списков, в котором есть объекты только Class1, то делается это просто с помощью фильтра в 1 строку:
    filtered_lst = [list(filter(lambda cls1: cls1.text != Действие найдено, lst_inner)) for lst_inner in ar_ar]
    Ответ написан
    1 комментарий
  • Как исправить ошибку которая возникла из за неправильного построения программы?

    Tomio
    @Tomio
    backend developer (python, php)
    Атрибут screen у вас создаётся только в момент создания экземпляра класса (application = App()) и вызова метода init(). Если пробовать его вызывать как вы - App.screen - ваш класс о нём ничего не знает.
    Вам нужно заменить App.screen на self.screen.

    P.S. и лучше переименовать init() в __init()__, тогда вам отдельно не нужно будет вызывать этот метод.
    Ответ написан
    1 комментарий
  • Как изменить значение переменной в процессе исполнения цикла?

    Tomio
    @Tomio
    backend developer (python, php)
    pop == rnd, но rnd нигде до этого не было. Плюс pop - строка. Вам надо привести pop к числовому типу.

    Вообще, вам бы вот это дело отрефакторить:
    dict = {1: trys - 1}
    tr1 = dict[1]

    цикл for i in range можно запустить и в обратном порядке, от trys до 0 =)

    Еще вот тут:
    if trys == 0:

    у вас trys всегда будет одинаковое.
    Ответ написан
  • Как спарсить нужные данные с XML файла Python?

    Tomio
    @Tomio
    backend developer (python, php)
    Попробуйте использовать для загрузки xml и для сохранения xlsx библиотеку pandas.
    После загрузки xml вы получите объект DataFrame (такой аналог эксель таблицы), с которым будет очень удобно работать (фильтровать записи, искать нужные, конвертировать типы, переименовывать столбцы).
    Погуглите в этом направлении поподробнее. Я думаю, что это может помочь в вашем вопросе.
    Ответ написан
    Комментировать
  • Как из подкласса списка в котором несколько словарей сделать метод который будет выводить значение из ключа?

    Tomio
    @Tomio
    backend developer (python, php)
    return self.kwargs.values() вернет вам значения всех ключей из словаря. Вам нужно метод переделать так:
    def search_by_name(self, name):
        return self.kwargs.get(name)

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

    Tomio
    @Tomio
    backend developer (python, php)
    Mid+ питонисту найти работу будет несложно. Потому как реальный Mid+ - это специалист с хорошим техническим бэкграундом и который хорошо владеет языком, структурами данных, алгоритмами и смежными инструментами (БД, git, docker, swagger и пр)
    Сейчас, по крайней мере на российском рынке, многие крупные компании глубоко уходят в онлайн, в цифровизацию, и в автоматизацию всех своих процессов, и им нужны толковые специалисты.
    Касательно питонистов Jun, Jun+ уровня не могу сказать точно. Если в команду требуется младший разработчик, то такого обычно стараются найти внутри компании (в некоторых крупных компаниях открываются внутренние школы для сотрудников, которые хотят переквалифицироваться в программистов). И если такого не находится, то уже ищут сотрудника извне. Но к такому сотруднику предъявляются более высокие требования.
    Ответ написан
    Комментировать
  • Как отфильтровать даты в pandas по нескольким ключам?

    Tomio
    @Tomio
    backend developer (python, php)
    Возможно, так:
    from datetime import date
    date_cleaning = date(2020, 3, 15)
    date_cleaning_end = date(2020, 12, 31)
    
    df_murmansk = df_murmansk[
        ((df_murmansk['Unnamed: 10'] > date_cleaning) & (df_murmansk['Unnamed: 10'] < date_cleaning_end)) |
        (df_murmansk['Unnamed: 10'] > date.today())
    ]
    Ответ написан
    2 комментария
  • Python - Почему мой код не работает?

    Tomio
    @Tomio
    backend developer (python, php)
    В методах print вам нужно обращаться не к объекту Simple напрямую, а к созданному экземпляру класса classObj. Собственно, поэтому пример из интернета и работает, а у вас нет.
    Ответ написан
    3 комментария
  • Автоматический перезапуск при смерти процесса python?

    Tomio
    @Tomio
    backend developer (python, php)
    Supervisord с параметром у запускаемого приложения autorestart=true
    Ответ написан
    3 комментария
  • Как метод актуальнее?

    Tomio
    @Tomio
    backend developer (python, php)
    Лично я предпочитаю f-строки.
    name = 'Ivan'
    age = 23
    print(f'Возраст {name} -- {age} лет')
    Ответ написан
    1 комментарий
  • Как добавить вложенный список?

    Tomio
    @Tomio
    backend developer (python, php)
    Где же вы взяли этот псевдокод с каким-то безумным синтаксисом. Ваша функция должна возвращать результат, который вы будете присваивать переменной. А у вас используется глобальная область видимости, так вообще категорически запрещено делать, потом нарастите себе уйму проблем.
    И не понятно, зачем вы открываете файл (причём формально не совсем корректно), но не пользуетесь его содержимым =\
    Начните с понятий. dict_autos у вас это не список, а словарь. Создать вложенный словарь проще простого, нужно лишь не забывать проверять, что каждый вложенный ключ словаря существует:

    def add(brand, model, year, dict_autos):
        if brand not in dict_autos:
            dict_autos.update({brand: set()})
        dict_autos[brand].add((model, year))
        return dict_autos
    
    dict_autos = {}
    dict_autos = add('Ford', 'Mustang', 1964, dict_autos)
    dict_autos = add('Ford', 'Focus', 2012, dict_autos)
    print(dict_autos)


    В примере выше я создаю словарь с ключом brand, в котором лежит сет из кортежей (model, year). Сет позволяет добиться уникальности и второй подобной записи (model, year) в нём не будет.
    Ответ написан
    Комментировать
  • Как обновиться с python 3.8 на 3.9?

    Tomio
    @Tomio
    backend developer (python, php)
    Для подобного рода вещей придумали виртуальное окружение venv. Разверните ваш проект в новом виртуальном окружении с новой версией интерпретатора python и посмотрите, всё ли будет работать. Почитайте changelog версии 3.9, посмотрите, какие модули были удалены, посмотрите, что поменялось в целом.
    Ответ написан
    Комментировать
  • Нужно ли документировать классы python?

    Tomio
    @Tomio
    backend developer (python, php)
    Работая в команде у вас не будет возможности не документировать классы, а так же функции и модули. Потому что:
    1. Ваш код просто не пройдёт проверку по flake8 и ваш пайплайн в системе контроля версий упадет на этапе синтаксического анализа кода.
    2. Это просто уважение к коллегам, которые будут работать с вашим кодом. КОмментарии намного облегчат им жизнь, да и вы вспомните что делает тот или иной класс или функция, если вернетесь к ним через какое-то время.

    Если же вы работаете один, то вы вольны поступать как вам удобно и угодно.
    Ответ написан
    1 комментарий
  • Почему %Y-%m-%dT%H:%M:%S не учитывает разделитель T?

    Tomio
    @Tomio
    backend developer (python, php)
    Попробуйте преобразовать объект даты в строковое представление:
    data['date_time'] = pd.to_datetime(data['date_time']).strftime('%Y-%m-%dT%H:%M:%S')
    Ответ написан
    Комментировать
  • Почему все элементы списка, ссылаются на последнее добавление?

    Tomio
    @Tomio
    backend developer (python, php)
    Потому что так работает питон)
    hYwYJqY.png
    Список у вас содержит один и тот же объект - self.office_equipment, который вы постоянно обновляете через update.
    Список может содержать "бесконечное" количество ссылок на неуникальные объекты. В ваше случае каждый раз в списке создается ссылка на один и тот же объект - self.office_equipment.
    Вам нужно написать вот так, чтобы всё работало как вы планировали:
    self.store.append(temp_value)
    Ответ написан
    Комментировать
  • Не понимаю суть self в python, кто может объяснить?

    Tomio
    @Tomio
    backend developer (python, php)
    self указывает на текущий экземпляр класса.
    То есть, например, есть класс Человек, которому при создании можно указать имя и возраст. Можно создать двоих людей и у каждого внутри своего класса будет свой self. Self нам позволяет обратиться к атрибутам и методам конкретного экземпляра класса.
    class Human(object):
    
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    old_man = Human('Vasilich', 88)
    young_man = Human('Petya', 6)
    print(old_man.name, old_man.age)
    print(young_man.name, young_man.age)
    >>> 'Vasilich', 88
    >>> 'Petya', 6


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

    Tomio
    @Tomio
    backend developer (python, php)
    Самое оптимальное вам посоветовали - это база данных с созданными индексами по колонкам, в которых вы будете искать. Быстрее способа что-то найти вы не найдете.
    Ну раз упомянули базу данных, посоветую вам еще библиотеку pandas - это прям вообще мощный монстр, который сможет вам очень сильно упростить процедуру поиска данных в таблице. Просто скармливаете пандасу ваш csv файл и гуглите нужные методы для ваших целей) ибо у него их полно.
    Ответ написан
    Комментировать