Ответы пользователя по тегу Python
  • TypeError: 'NoneType' object cannot be interpreted as an integer как исправить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Я думаю, что os.startfile(r'звуки\крик.mp3') возвращает None, соответственно в переменной krik содержится None, соответственно когда это None попадает на вход os.close(), вы получаете ошибку.

    Я бы рекомендовал вам во-первых изучить объектную модель языка python, чтобы осознавать, что именно вы делаете. Во-вторых, изучить документацию, касающуюся используемых библиотек и методов. В общем, это легко сделать, выполнив команду help(os.startfile)
    и
    help(os.close)
    В частности, метод os.close() требует на вход file descriptor, т.е. число, int. Значит, надо получить дескриптор и скормить его методу.

    P.s. Ну, кстати, как указал уважаемый Vindicar os.close не закрывает запущенный процесс. Это надо копать в сторону команды kill, я так думаю.
    Ответ написан
    2 комментария
  • Знатоки Selenium - где найти аргументы для webdriver.execute_script()? Какие скрипты можно запускать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Посмотрите тут
    Ответ написан
    Комментировать
  • Не записывает или неправильно вывожу массив в python 3.9.1?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Почитайте про области видимости (пространства имён).
    У вас есть два списка iGetDay. Один - в глобальном пространстве имён модуля, другой - в локальном пространстве функции dow.
    Это разные объекты, никак друг с другом не связанные.
    Вам лучше возвращать значение из функции при помощи return и результат выполнения функции связывать с глобальным именем вне функции.
    И все значения явно передавать в функции как параметры функции и получать из функции как return. И не полагаться на области видимости, они неявные и в них легко запутаться.
    Ответ написан
    Комментировать
  • Как получить (резолвить) группу контактов из Outlook при отправке сообщений через MAPI?

    phaggi
    @phaggi Автор вопроса, куратор тега Python
    лужу, паяю, ЭВМы починяю
    Благодаря подсказке Viktor T2 доковырялся-таки до списков рассылки (тип DistListItem) и нашел в документации MS методы и поля этого класса. Ура!
    код
    import win32com.client as win32
    from win32com.client.gencache import EnsureDispatch
     
     
     
     
    def get_maillist(maillistname: str):
        """
     
        :param maillistname: str name of Group contacts at Outlook
        :return: string of addresses (del = ;) of Group contacts
        (empty if Group 'maillistname' not found)
        """
        outlook = EnsureDispatch("Outlook.Application")
        olNamespace = outlook.GetNamespace("MAPI")
        olFolder = olNamespace.GetDefaultFolder(10)
        olConItems = olFolder.Items
        mail_list = []
        for olItem in olConItems:
            if "_DistListItem" in str(type(olItem)) and olItem.DLName == maillistname:
                counter = olItem.MemberCount
                while bool(counter):
                    mail_list.append(olItem.GetMember(counter).Address)
                    counter -= 1
        if bool(mail_list):
            result = ';'.join(mail_list)
        else:
            result = ''
        return result
     
    if __name__ == '__main__':
        outlook = win32.Dispatch('outlook.application')
        mail = outlook.CreateItem(0)
        mail.To = get_maillist('test1')
        mail.Subject = 'testmail'
        print(mail.Recipients.ResolveAll())
        print(mail.To)
        mail.Send()
    Ответ написан
    Комментировать
  • Как изменить переменную в бд, при условии наличия нужного параметра из того-же бд?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    То, что вы указали как 0.010, является не переменной в бд, а значением. Переменные в бд - это совсем другое.
    Поэтому формально ответа на вопрос «как» нет.

    Что касается «при на ходе у юзера разрешения» - я так понимаю, в бд за это отвечают поля booster - надо либо сделать на каждый вариант новую строку update с другими параметрами логики where, которые и проверяют значения полей booster, либо делать логику в самой программе, чтобы она считывала значения booster, осмысливала и формировала нужную строку update для базы. Всё просто.
    Ответ написан
    Комментировать
  • Почему при объединении двух датафреймов с помощью .merge в pandas datetime index меняются на обычные?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Попробуйте поиграться с параметрами индексов
    pd.merge(df1, df2, left_index=True, right_index=True)
    Ответ написан
    Комментировать
  • Как изменить переменную в другом скрипте?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Потому что вы не то меняли. У вас есть ссылка на объект в памяти, и вы поменяли ссылку на другой объект в памяти. Память никак не отображается в файл на диске.
    Вам надо в конце открыть файл на диске как текстовый файл для чтения; считать его содержимое в память; найти там нужную строку и заменить её на нужную; открыть файл на запись и сохранить туда новый вариант.
    Ответ написан
  • Для чего используется "@" перед переменными в Python?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Для того, чтобы вы задали себе этот вопрос и открыли для себя пользу учебников. 61a0da3259ddf867054068.jpeg Целая глава посвящена вопросу!
    spoiler
    Эти жулики в роликах про ботов сами этот вопрос изучили, а вас не учат, а заставляют как обезьянок повторять тупые действия. Так вам и надо, неучи.
    Ответ написан
    Комментировать
  • Как с помощью python найти в doc файле значение, определить в какой оно таблице и столбце?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    god_dan63, с помощью парсеров, разумеется. В зависимости от того, что надо разбирать, выберите парсер, изучите его документацию и сделайте программу. Если не заработает, как ожидалось - приносите код и traceback ошибки, тогда будет больше шанс получить полезный ответ.

    В вашем конкретном случае можно использовать bs4 для html варианта либо python-docx для word. Оба позволяют вычленить таблицы и работать с ними. Первый немного более низкоуровневый. В зависимости от вашей квалификации как программиста может быть легче в более гибком, но «сложном» bs4 или несколько более ограниченном, но «простом» python-docx.
    Ответ написан
    8 комментариев
  • Как написать фильтр для вывода в консоль исходя из передаваемого аргумента?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    [print(''.join([i, '\n'])*N, end='') for i in set(genres)]
    Ответ написан
    5 комментариев
  • Как разделить фото через каждые n пикселей?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    В простом варианте картинка это список из 100 списков по 100 ячеек, в каждой ячейке вложенного списка находятся три числа типа int8, отражающие яркость по одному из трех цветов (red green blue). Слепить три картинки при условии одинаковой ширины - просто соединить три списка верхнего уровня.
    Потом рубим его банальными срезами с шагом (70 строк, примерно получается 3*70*100 = 2100 пикселей, и получаем набор требуемых кусочков.
    Ответ написан
    Комментировать
  • Как указать относительный путь к файлу через внешнюю папку?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    from pathlib import Path
    print(Path.home())
    print(Path.home().parent)

    Очень рекомендую освоить.
    Особо прикольно Path / Path / Path делать. Просто в строчку.
    Ответ написан
    Комментировать
  • Как правильно будет сделать sha256 хеш?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Это вам может помочь.
    Если не поможет, то вам на freelance.habr.com
    Ответ написан
    Комментировать
  • Как реализовать поиск фраз в тексте по вордлисту?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Натыкал что первое в голову пришло:
    Натыканное
    data = '''Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь
    участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно верифицированы.Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) коля Светлана Евгений Маша Игорь Миша
    участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно верифицированы.Задача организации, в особенности же разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов)  Светлана, Евгений. Маша? Игорь
    Светлана участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светлана Светлана быть своевременно разбавленное Светлана изрядной долей эмпатии, рациональное мышление обеспечивает широкому кругу (специалистов) Светлана Евгений Маша Игорь Светлана Евгений Маша Игорь
    участие в формировании инновационных методов управления процессами. В своём стремлении улучшить пользовательский опыт мы упускаем, что некоторые особенности внутренней политики могут Светлана Светланаверифицированы.'''
    words = ['Маша',
    'Игорь',
    'Светлана',
    'Евгений']
    newdata = [(word.strip(), number) for number, word in enumerate(data.split()) if word in words]
    
    data = [(word[0], newdata[i+1][1]-word[1]) for i, word in enumerate(newdata[:-1])]
    
    newdata = []
    for word in data:
        if word[1] == 1:
            newdata.append((word[0], 1))
        else:
            newdata.append((word[0], 0))
    
    result = []
    results = []
    counter = 0
    another = False
    for i, word in enumerate(newdata):
        if word[1]:
            counter += 1
            result.append(word[0])
            another = True
        elif another or i == len(newdata):
            result.append(word[0])
            another = False
            results.append((counter+1, result))
            result = []
            counter = 0
            
    print(results)
    Ответ написан
  • Как перебрать одно слово в каждой строке?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    data = '''<p><vim-math id="m7859635math1">AB+CD=|</vim-math><math-input id="m7859635MI1" keyboard-skin="junior" keyboard-type="base" strict-check="false">
      <math-input-answer>x+y</math-input-answer>
      <math-input-answer>y+x</math-input-answer>
    </math-input><vim-math id="m7859635math2">|+|</vim-math><math-input id="m7859635MI2" keyboard-skin="junior" keyboard-type="base" strict-check="false">
      <math-input-answer>t+z</math-input-answer>
      <math-input-answer>z+t</math-input-answer>'''
      
    string = '<math-input-answer>'
    results =[]
     
    def get_text(line):
        line = line.split('>')[1]
        line = line.split('<')[0]
        return line
         
    for line in data.splitlines():
        if string in line:
            result = get_text(line)
            results.append(result)
    print(results)

    Тут я сочинил совершенно безобразную функцию парсинга, потому что лень прикручивать к примеру, натыканному на телефоне, bs4 или ещё что-нибудь такое, или сочинять regex…
    вместо неё можно подставить более другую на своё усмотрение.
    Ответ написан
    2 комментария
  • Почему появляется лишний пробел в начале строки?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    print(b.strip())
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    journey654645, теперь достаточно, хотя в целом есть над чем поработать.

    Смотрите, что у вас получается по программе:
    у вас запуск исполнения графического интерфейса стартует после вот этих строк:
    x1 = - c + sqrt(c ** 2 + 4 * (d * b)) / 2 * b
    x2 = - c - sqrt(c ** 2 + 4 * (d * b)) / 2 * b

    но переменные, которые используются в этих строках, содержат в момент их выполнения пустые строки. Об этом, собственно, и сообщает программа в traceback.

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

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

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Полагаю, вместо записи цен в список лучше организовать словарь, в котором под нумерованные ключи писать нормальные цены, а в ключ “promo” писать промо-цену.
    Ответ написан
    1 комментарий
  • Как проверить есть ли элемент на странице в selenium python с помощью if?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Сейчас модно как-то так:
    driver.implicitly_wait(15)
    if bool(driver.find_elements(by="class name", value='blabla')):
        print('Yesss')
    else:
        print('Nooo')

    и без всяких try
    Ответ написан