Ответы пользователя по тегу Python
  • Программа в фоне на Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Добавьте в crontab выполнение вашего скрипта раз в 5 минут
    Ответ написан
  • Как можно построчно считать элементы таблицы?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import re
    import pprint
    import requests
    import lxml.html
    
    URL = 'http://www.asu.ru/timetable/students/32/2129436778/'
    
    pp = pprint.PrettyPrinter(indent=4)
    res = requests.get(URL)
    root = lxml.html.fromstring(res.text)
    table = list()
    elems = root.xpath('.//tr[@class="schedule-date"]|.//tr[@class="schedule-time"]')
    
    curr_date = ''
    
    for el in elems:
        if el.get('class') == 'schedule-date':
            curr_date = el.xpath('.//span[1]')[0].text
    
        if el.get('class') == 'schedule-time':
            out = re.sub(' +', ' ', ''.join(el.itertext()))
            out = re.sub('^\s+', '', out)
            out = re.sub('\n+', '', out)
        table.append({'date': curr_date, 'info': out})
    pp.pprint(table)


    [   {   'date': 'Понедельник',
            'info': '4   13:20 - 14:50     лек. Физические методы исследования    '
                    'проф. Смагин В.П.   500\xa0К       дата изменения: 08.04.2019 '
                    '11:21  свободные аудитории    '},
        {   'date': 'Понедельник',
            'info': '2   09:40 - 11:10    а)  лаб. Новые информационные '
                    'технологии    преп. Кушнир Е.Ю.   417\xa0К       дата '
                    'изменения: 24.04.2019 11:16  свободные аудитории    '},
        {   'date': 'Понедельник',
            'info': '3   11:20 - 12:50     пр.з. Социология    доц. Артюхина '
                    'В.А.   311а\xa0К       дата изменения: 24.04.2019 11:13  '
                    'свободные аудитории    '},
        {   'date': 'Вторник',
            'info': '3   11:20 - 12:50     пр.з. Социология    доц. Артюхина '
                    'В.А.   311а\xa0К       дата изменения: 24.04.2019 11:13  '
                    'свободные аудитории    '},
        {   'date': 'Вторник',
            'info': '1   08:00 - 09:30     пр.з. Педагогика    доц. Зацепина '
                    'О.В.   311а\xa0К       дата изменения: 24.04.2019 11:11  '
                    'свободные аудитории    '},
        {   'date': 'Вторник',
            'info': '2   09:40 - 11:10     пр.з. Педагогика    доц. Зацепина '
                    'О.В.   311а\xa0К       дата изменения: 24.04.2019 11:07  '
                    'свободные аудитории    '},
        {   'date': 'Вторник',
            'info': '3   11:20 - 12:50     пр.з. Кристаллохимия    доц. Стручева '
                    'Н.Е.   106а\xa0К       дата изменения: 24.04.2019 11:06  '
                    'свободные аудитории    '},
        {   'date': 'Среда',
            'info': '3   11:20 - 12:50     пр.з. Кристаллохимия    доц. Стручева '
                    'Н.Е.   106а\xa0К       дата изменения: 24.04.2019 11:06  '
                    'свободные аудитории    '},
        {   'date': 'Среда',
            'info': '3   11:20 - 12:50    а)  лаб. Новые информационные '
                    'технологии    преп. Кушнир Е.Ю.   419\xa0К       дата '
                    'изменения: 08.04.2019 11:21  свободные аудитории    '},
        {   'date': 'Среда',
            'info': 'б)  лаб. Новые информационные технологии    доц. Геньш К.В.   '
                    '417\xa0К       дата изменения: 08.04.2019 11:21  свободные '
                    'аудитории    '},
        {   'date': 'Среда',
            'info': '4   13:20 - 14:50    б)  лаб. Новые информационные '
                    'технологии    доц. Геньш К.В.   417\xa0К       дата '
                    'изменения: 24.04.2019 11:18  свободные аудитории    '},
        {   'date': 'Четверг',
            'info': '4   13:20 - 14:50    б)  лаб. Новые информационные '
                    'технологии    доц. Геньш К.В.   417\xa0К       дата '
                    'изменения: 24.04.2019 11:18  свободные аудитории    '},
        {   'date': 'Четверг',
            'info': '2   09:40 - 11:10    а)  пр.з. Аналитическая химия    доц. '
                    'Лейтес Е.А.   500\xa0К       дата изменения: 29.04.2019 '
                    '10:56  свободные аудитории    '},
        {   'date': 'Четверг',
            'info': '3   11:20 - 12:50     пр.з. Физические методы исследования    '
                    'проф. Смагин В.П.   521\xa0К       дата изменения: 24.04.2019 '
                    '11:15  свободные аудитории    '},
        {   'date': 'Четверг',
            'info': '4   13:20 - 14:50    б)  пр.з. Аналитическая химия    проф. '
                    'Смагин В.П.   508\xa0К       дата изменения: 29.04.2019 '
                    '10:55  свободные аудитории    '},
        {   'date': 'Пятница',
            'info': '4   13:20 - 14:50    б)  пр.з. Аналитическая химия    проф. '
                    'Смагин В.П.   508\xa0К       дата изменения: 29.04.2019 '
                    '10:55  свободные аудитории    '},
        {   'date': 'Пятница',
            'info': '1   08:00 - 09:30    а)  лаб. Аналитическая химия    доц. '
                    'Лейтес Е.А.   509\xa0К       дата изменения: 29.04.2019 '
                    '10:55  свободные аудитории    '},
        {   'date': 'Пятница',
            'info': 'б)  лаб. Аналитическая химия    проф. Смагин В.П.   508\xa0'
                    'К       дата изменения: 29.04.2019 10:55  свободные '
                    'аудитории    '},
        {   'date': 'Пятница',
            'info': '2   09:40 - 11:10    а)  лаб. Аналитическая химия    доц. '
                    'Лейтес Е.А.   509\xa0К       дата изменения: 29.04.2019 '
                    '10:54  свободные аудитории    '},
        {   'date': 'Пятница',
            'info': 'б)  лаб. Аналитическая химия    проф. Смагин В.П.   508\xa0'
                    'К       дата изменения: 29.04.2019 10:53  свободные '
                    'аудитории    '},
        {   'date': 'Пятница',
            'info': '3   11:20 - 12:50    а)  лаб. Аналитическая химия    доц. '
                    'Лейтес Е.А.   509\xa0К       дата изменения: 29.04.2019 '
                    '10:53  свободные аудитории    '},
        {   'date': 'Пятница',
            'info': 'б)  лаб. Аналитическая химия    проф. Смагин В.П.   508\xa0'
                    'К       дата изменения: 29.04.2019 10:52  свободные '
                    'аудитории    '},
        {   'date': 'Пятница',
            'info': '4   13:20 - 14:50     лек. Физические методы исследования    '
                    'проф. Смагин В.П.   500\xa0К       дата изменения: 08.04.2019 '
                    '11:21  свободные аудитории    '}]
    Ответ написан
  • Возможно лт узнать местоположение человека в PYTHON?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Возможно.

    1. Берете документацию по вашему устройству, в части обращения к GPS или где вы там данные местоположения читать собрались.
    2. Читаете каким образом из него получить нужные данные.
    3. Получаете.
    Ответ написан
  • Как бороться с ошибкой OverflowError: Python int too large to convert to SQLite INTEGER?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    1. Использовать текстовое поле для хранения. Просто делать преобразование типов.
    2. Использовать более подходящую БД (Postgres, MySQL)
    Ответ написан
  • Почему когда достаёшь список из матрицы его значение меняеться?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Потому что вы выводите 2-й столбец матрицы (нумерация столбцов идет с нуля). В вашем примере там все единицы.
    Ответ написан
  • Как эффективно использовать Docker + Docker-compose при разработке?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    но к ним нельзя подключиться извне (из-за использования networks, а как открыть нетворк -
    догадаться нужно самому)

    А через директивы ports - разве не прокидываются нужные порты из контейнеров наружу?

    При внесении каких-то изменений в основное приложение
    можно лишь надеяться что они когда-то появятся в контейнере

    Если вы вносите изменения в проект который примаплен через volume - то контейнер их тут же видит.
    Умеет ли ваше приложение видеть что локальные файлы изменились, и применять их - это уже другой вопрос.
    Но даже если не умеет - нет никаких проблем перестартануть нужный контейнер после внесения каких-либо изменений.

    Можно пять раз удалить контейнер с приложением, потом десять раз удалить образ
    никакие изменения никуда не попадут.

    Не знаю как у вас построено - но приведу насчет примеров с проектами на python.
    В Python создается папка с виртуальным окружением, куда устанавливаются все необходимые библиотеки для работы. Эта папка мапится вместе с проектом в контейнер. При этом используется контейнер python из стандартного образа на все проекты, а виртуальное окружение - из примапленной директории. Нет необходимости ничего дополнительно устанавливать в контейнеры. Поэтому что вы там пытаетесь делать с образами - непонятно...

    Использовать при этом виртуальное окружение на локальной машине, запуская приложение через него - нельзя,
    потому что нетворк баз данных где-то там локальный.

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

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Так - что-ли?:
    import json
    for im in json.loads(f'[{text}]'.replace('\'', '"')):
       if len(im)>5 and len(im)<10:
          print(im)


    либо так:

    import ast
    for im in filter(lambda x: len(x)>5 and len(x)<10, ast.literal_eval(text)):
        print(im)


    Вывод:
    Hockey
    Soccer
    Ответ написан
  • Как запускать задачи асинхронно по мере поступления?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
  • Как улучшить код?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как улучшить код?

    К примеру так:
    import math
    import operator
    
    def calc():
        op = input("Select an operator: + - * / ** √\n")
        
        if op in ['√']:
            num = float(input('Enter a number: '))
            res = f'√{num} = {math.sqrt(num)}'
        else:
            num1 = float(input("Enter the first number...\n"))
            num2 = float(input("Enter the second number...\n"))
            res = {
               '+': f'{num1} + {num2} = {operator.add(num1, num2)}',
               '-': f'{num1} - {num2} = {operator.sub(num1, num2)}',
               '*': f'{num1} * {num2} = {operator.mul(num1, num2)}',
               '/': f'{num1} / {num2} = {operator.truediv(num1, num2)}',
               '**': f'{num1} ** {num2} = {operator.pow(num1, num2)}',
            }.get(op, 'Unknown operation')
        print(res)
    
    if __name__ == '__main__':
        print("This is a simple calculator on python")
        while True:
            calc()
            if input("Calculation finished. Do another? (Y/N)\n").lower() != 'y':
                break

    А можно и мой вариант улучшить.
    Ответ написан
  • Почему ,когда в if переменная z=0, не начинается if сверху с условием if l=='ru' and z==0:?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Потому что к примеру когда вы тут вводите 'y' - то интерпретатор присваивает z значение равное нулю, и со спокойной совестью завершает работу, так как программа у вас заканчивается по выходу из условия, и никакого продолжения не будет.
    ...
    if z==1:
        yr()
        v=str(input("Вы хотите продолжить y-yes/n-no :"))
        if v == 'y':
            z=0
    ...

    З.Ы. Почитайте еще про организацию кода на Python.
    Ответ написан
  • Как генерировать ссылку на запрос в гугле на python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Простой запрос в гугле выдает к примеру такую библиотеку:
    https://python-googlesearch.readthedocs.io/en/latest/

    Использование проще некуда:
    # Get the first 20 hits for: "Breaking Code" WordPress blog
    from googlesearch import search
    for url in search('"Breaking Code" WordPress blog', stop=20):
        print(url)
    Ответ написан
  • Как в python получить значение div'а с известным id который находится в других тегах?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    from lxml import html
    
    tree = html.fromstring('<содержимое какой-то страницы>')
    
    tree.xpath('.//div[@id="<какой-то определенный id>"]')[0].text
    Ответ написан
  • Как достать данные, если div пустой, а на сайте в этом divе отображаются данные?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Навскидку:
    import os
    from selenium import webdriver
    
    DRIVER_PATH = os.path.join('c:\\', 'utils', 'chromedriver.exe')
    
    options = webdriver.ChromeOptions()
    options.add_argument('headless')
    options.add_argument('start-maximized')
    options.add_argument('window-size=2048x5000')
    
    browser = webdriver.Chrome(executable_path=DRIVER_PATH, options=options)
    
    browser.get('https://lime-shop.ru/shops/moskva/')
    browser.implicitly_wait(10)
    
    for el in browser.find_elements_by_xpath("//div[@class='shops__place']"):
        print(el.text)
        print('-' * 30)


    5ceedbefac606400592684.jpeg
    Ответ написан
  • Нужна математика для python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    если рассматривать не бек энд, а другие сферы применения питона

    Из других сфер применения - ИИ, нейронные сети, обработка образов, анализ данных, статистика, моделирование (физ. процессов, биология, хим. процессов и т.п.), и т.д. - вполне себе нужна...
    Ответ написан
  • Преобразование из PHP в Python или как запустить PHP скрипт в Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    > как преобразовать данный код в Python

    примерно так:
    import requests
    
    URL = 'https://joinposter.com/api/clients.createClient?token=687409:4164553abf6a031302898da7800b59fb'
    result = requests.post(
        URL, 
        data={
            'client_name': 'Попова Елена Андреевна',
            'client_sex': 2,
            # другие поля
        }
    })


    > или как запустить PHP скрипт в Python

    например так:
    import subprocess
    
    res = subprocess.run(["php", "your_php_script.php"], capture_output=True)
    
    print(res.stdout)
    Ответ написан
  • Как на Python спарсить данные в mySQL таблицу?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Попробуйте выполнить команды вроде
    ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
    ALTER TABLE tablename CHARACTER SET utf8 COLLATE utf8_general_ci;

    в консоли mysql сервера
    dbname и tablename свои только подставьте...
    Ответ написан
  • Почему пишет from: can't read /var/mail/urllib.parse?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Предварительно установите нужные модули в консоли (выйдя из интерпретатора python)
    pip install lxml requests
    а лучше почитайте про virtualenv и используйте его.

    Код выполняйте в консоли интерпретатора python а не в консоли bash
    Ответ написан
  • Игнорирование заглавных букв, пробелов, знаков препинания и тд. в python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Используйте более продвинутые методы проверки как вариант:
    from Levenshtein import distance
    
    HELLO = [x.lower() for x in 
       ['start', 'Привет', 'Хай',  'Доброе утро', 'Эй', 'Добрый день', 'Добрый вечер']]
    
    
    samples = ['превед!', 'ывафыва', 'добрый день!', 'хэй', 'бла-бла']
    
    for im in samples:
        print(f'> {im}')
        if any(distance(im.lower(), x) < 4 for x in HELLO):
            print('< Привет\n')
        else:
            print('< Я не понимаю\n')


    > превед!
    < Привет
    
    > ывафыва
    < Я не понимаю
    
    > добрый день!
    < Привет
    
    > хэй
    < Привет
    
    > бла-бла
    < Я не понимаю
    Ответ написан
  • Как вывести алфавит русского языка на Python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    >>> a = ord('а')
    >>> ''.join([chr(i) for i in range(a,a+32)])
    'абвгдежзийклмнопрстуфхцчшщъыьэюя'


    вариант с "ё"
    >>> ''.join([chr(i) for i in range(a,a+6)] + [chr(a+33)] + [chr(i) for i in range(a+6,a+32)])
    'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    Ответ написан
  • КАк решить проблему с созданием superuser в django?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Ну так выполните
    python manage.py migrate
    перед этим - вам же это четко в ошибке говорится
    Ответ написан