• Как проверить в JSON наличие определенного поля?

    Vindicar
    @Vindicar
    RTFM!
    Элементарная работа со списками и словарями. Азы языка.
    Парсишь строку JSON в объект (назовем его json_obj) через json.load() или json.loads(), смотря что удобнее.
    У тебя объект верхнего уровня - массив, т.е. список. Перебираешь его элементы циклом for item in json_obj.
    Объекты следующего уровня - просто объекты, т.е. словари. Если надо проверить именно наличие поля, безотносительно его значения, то просто 'slot' in item.
    Всё.
    Ответ написан
    2 комментария
  • Какие есть аналоги Android Studio на Ubuntu?

    @Galyminsky
    Android Developer \ UX/UI Designer
    В принципе, сама по себе Android Studio - не сильно требовательная. В основном, вся боль начинается при сборке и запуске проекта на эмуляторе.
    Начинал тоже, с древнего ПК, (там по моему даже 4 ГБ ОЗУ не было).

    Решил проблему - запуском на реальном устройстве, девайсе, вместо эмулятора.
    Ответ написан
    Комментировать
  • Какие есть аналоги Android Studio на Ubuntu?

    GavriKos
    @GavriKos
    Прямых аналогов нет.
    Писать код можете в любом удобном для вас редакторе, а собирать потом в консоли.
    Ответ написан
    Комментировать
  • Стоит ли писать под Android на Python?

    @Galyminsky
    Android Developer \ UX/UI Designer
    Kotlin.
    Про остальное уже забудь, если ты решил заняться Android разработкой.
    Ответ написан
    Комментировать
  • Стоит ли писать под Android на Python?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Под андроид пишут 80% на котлине и 20% на Java, остальные 0% - на C#
    Ответ написан
    Комментировать
  • Что в Windows занимает почти 50 ГБ?

    @NortheR73
    системный инженер
    еще пожиратель дискового места - c:\Windows\SoftwareDistribution\Download\
    Ответ написан
    3 комментария
  • Что в Windows занимает почти 50 ГБ?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    hiberfil.sys — размером с ОЗУ. Если оно вам не надо powercfg -h off.
    C:\Windows\WinSxS содержит множество символических ссылок: показывает много — по факту значительно меньше.
    C:\ProgramData\Package Cache и C:\ProgramData\Packages — инсталляционные пакеты, которые можно перенести на другой диск и сделать символьные ссылки.
    Ответ написан
    1 комментарий
  • Что в Windows занимает почти 50 ГБ?

    @rPman
    c:\AMD - содержит временные файлы установщика драйверов (например на видеокарту), можно (нужно) удалить
    c:\$WinREAgent содержит бакап системы перед очередным крупным обновлением, должен удалиться через некоторое время сам, если у тебя все работает - удаляй
    c:\Recovery смело удаляй, содержит бакап с обновления с другой версии (типа win8 -> win10), на сколько я понимаю крупные обновления win10 так же туда попадают
    c:\Users - пользовательские файлы (документы, рабочий стол), временные и часто приложения, для установки которых не требовались права администратора, чистить этот каталог сложно но там легко десяток гигабайт найти
    например %localappdata%\Temp (можно прямо так в проводнике написать) - временный каталог, где скапливается гигабайтами мусор который надо удалять
    hiberfil.sys — размером с ОЗУ. Если оно вам не надо powercfg -h off.
    используется для быстрого включения/выключения машины без закрытия программ (по умолчанию оно используется даже при обычном выключении, пользовательские программы закрываются но службы и др. остаются и делается hibernate (очень удобно на ноутбуках настроить гибернацию при закрытии крышки)
    Отключить это безопасно, но скорость включения компьютера заметно увеличится (не секунды а минуты на слабом железе).
    c:\System Volume Information - системный каталог, содержит файлы точек восстановления, удалять не надо но можно регулировать процент занимаемого места в настройках восстановления

    p.s. запусти штатный cleanmgr (Освобождение места на диске за счет удаления ненужных файлов) в нем кнопку Очистить системные файлы, и внимательно посмотри на чекбоксики, почти всегда достаточно их отметить все, и нажми ОК

    p.p.s. после чистки лишних файлов, можно еще нажать чекбоксик - Сжимать этот диск для экономии места в свойствах диска, это освободит примерно 30% занятого места (будет долго думать, до неск. часов, выдаст несколько раз ошибки, их можно игнорировать), делать это безопасно, в очень редких случаях (медленный процессор + ssd) будет легкое замедление записи, во всех остальных случаях даже ускорится работа с диском
    Ответ написан
    2 комментария
  • Как понять, почему Windows не обновляется?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    63747f7b23664935215302.png
    Ответ написан
    Комментировать
  • Как получить доступ к управлению воспроизведением неактивного окна?

    @Drno
    либо большой монитор, либо 2 монитора)
    Ответ написан
    Комментировать
  • Как между асинхроными функциями делиться и перекидывать переменные и их значения?

    Vindicar
    @Vindicar
    RTFM!
    Потому что у каждого пользователя должен быть свой экземпляр хранимых данных.
    Например, вместо одиночного хранилища нужно иметь хранилище вида "ключ-значение", где ключом будет ID пользователя, а значением - данные, которые для этого пользователя актуальны.
    Природа этого хранилища не принципиальна: может быть простой словарь (если не нужно сохранение состоятния между перезапусками бота), может быть БД, может быть ещё что.

    Собственно, в аиограме есть механизм Finite State Machine, который как раз про организацию сценариев, с отслеживанием того, на каком этапе находится конкретный пользователь.

    Но для его использования нужно знать питон на уровне немножечко повыше "Если я пытаюсь исплользовать return то код дальше становится недоступным".
    Ответ написан
    Комментировать
  • Телеграм Бот Python. Кнопки и переменные?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Телеграм Бот Python. Кнопки и переменные?
    Нет!
    Ответ написан
    3 комментария
  • Как убрать лишние знаки?

    Vindicar
    @Vindicar
    RTFM!
    Ещё один не выучил основы языка, но пытается работать с БД.

    fectchone() возвращает кортеж, в твоём случае кортеж с одним элементом. Скобки - это строковое представление кортежа. Как вытащить значение из кортежа - читай по ссылке.

    Кортежи, списки и словари - это вообще азы языка. Их надо знать, и узнавать с первого взгляда.
    Ответ написан
    Комментировать
  • Можно ли написать OS на Python?

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

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

    Простой ответ - нет, питон не предназначен для написания ОС, но использовать его для разработки большОго количества элементов ОС можно.
    Ответ написан
    2 комментария
  • Почему приложение Flask не работает в классе?

    Vindicar
    @Vindicar
    RTFM!
    Чтобы понять, нужно понимать три вещи про питон.
    Во-первых, в нём всё - оператор. Да-да.
    def - это оператор объявления функции.
    class - оператор объявления класса.
    Тебе никто не запрещает сделать
    if condition:
        def foo():
            pass
    else:
        def bar():
            pass


    Во-вторых, все методы класса существуют на уровне класса. Явная передача self на это намекает.
    Иными словами:
    class Foo:
        def bar(self, baz):
            print(self, baz)
    
    foo = Foo()
    # вот этот вызов
    foo.bar('hallo!')
    # полностью эквивалентен вот этому
    Foo.bar(foo, 'hallo!')

    А когда ты обращаешься к foo.bar, Питон конструирует специальный временный объект-обёртку, который ссылается на Foo.bar(), но в то же время подставляет туда первым параметром тот объект foo, к которому произошло обращение. Так что если Foo.bar() принимает два параметра (self и baz), то foo.bar() принимает уже один (baz), так как правильный self будет подставлен этой обёрткой самостоятельно.

    В-третьих, декоратор - это просто синтаксический сахар для вызова функции. Иными словами:
    @app.route('/') 
    def index(self):
        return render_template('index.html')

    будет эквивалентно вот такому коду:
    def index(self):
        return render_template('index.html')
    
    _decorator = app.route('/')
    index = _decorator(index)

    Причем это будет работать одинаково и вне класса, и внутри класса.
    Как это относится к твоему вопросу? А вот как.
    class Web:
        app = Flask(__name__) 
    
        @app.route('/') 
        def index(self):
            return render_template('index.html')

    Последовательность действий тут такова:
    1. Создаётся пространство имён для нового класса, пока что безымянного.
    2. В этом пространстве имён создаётся переменная app, её выражение вычисляется немедленно
    3. В этом пространстве имён создаётся функция index()
    4. Отрабатывает декоратор @app.route(), и регистрирует эту функцию index() как обработчик запроса. Обрати внимание, ни функция index(), ни @app.route понятия не имеют, что index() находится внутри класса! Поэтому app.route не ожидает, что index() будет первым параметром принимать какой-то там self. Как следствие, вместо self функция index() получит то, что передал первым параметром Flask. В данному случае - ничего, так как у тебя роут без параметров.
    5. Ну и в итоге отрабатывает создание класса, с учётом указанных предков (у тебя это неявно указанный object), наполнения пространства имён, и пр. Этот класс потом присваивается переменной Web в вышележащем пространстве имён.

    Ну и как теперь жить?
    А очень просто. Если тебе вот позарезу нужны обработчики роутов в виде методов класса, можно сделать так:
    class Web:
        def __init__(self):
            self.app = Flask(__name__) 
            # получаем обёртку для метода, привязанную к нашему self, см. пункт 2
            self_index = self.index
            # вызываем декоратор вручную, см. пункт 3.
            decorator = self.app.route('/')
            decorator(self_index)
            # ну или то же самое в одну строку:
            self.app.route('/')(self.index)
    
        def index(self):
            return render_template('index.html')

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

    senku1435
    @senku1435
    py aiogram develop, c# mid
    Видно не в том интернете искали
    from pyowm import *
    #Главная часть
    owm = OWM('ced6722a4e4375a0412830ba1f4daf74')
    place = input('Введите город: ')
    mgr = owm.weather_manager()
    
    observation = mgr.weather_at_place(place)
    w = observation.weather
    #До сюда
    
    #темпреатура
    t = w.temperature( "celsius" )
    t1 = t['temp']
    t2 = t['feels_like']
    t3 = t['temp_max']
    t4 = t['temp_min']
    
    #скорость ветра
    wi = w.wind()['speed']
    
    #humidity
    humi = w.humidity
    
    #status
    st = w.status
    
    #clouds
    cl = w.clouds
    
    #detail status
    ds = w.detailed_status
    
    #time last status
    time = w.reference_time('iso')  #хз, но iso надо
    
    #pressure
    pr = w.pressure['press']  #такая же херня как и iso хз, но надо
    
    #visibility distance
    vd = w.visibility_distance
    
    #Кароче можно еще через f'' и {}
    print(f'В городе {place} температура {t1}°C, ощущается как {t2}°C, максимальная температура {t3}°C, минимальная температура {t4}°C.')
    
    detailstatus = input("Вам вывести полный статус?: ")
    if detailstatus == "Да":
        print(f' Скорость ветра составляет {wi} м/с \n Влажность {humi}% \n Статус {st} \n Облачность {cl}\n Детальный статус {ds} \n Видимость {vd} м\n Последнее время диагностики {time}\n Давление {pr} мм.рт.ст ')
        print('Спасибо что воспользовались нашей программой!')
    else:
        print('Хорошо \nСпасибо что воспользовались нашей программой!')
    
    
    
    #для перевода нужно
    from pyowm.utils.config import get_default_config
    translate = get_default_config()
    
    #указываем значение (список) и указывваем значение (в нашем случае это русский язык)
    translate['language'] = 'ru'
    Ответ написан
    3 комментария
  • Поиск вне зависимости от позиции?

    @AVKor
    Регулярки тут не нужны.
    $ python3
    Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
    [GCC 10.2.1 20210110] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> words = 'как дела'
    >>> phrase = 'у тебя дела как'
    >>> [word for word in words.split(' ') if word in phrase.split(' ')] == words.split(' ')
    True
    >>> phrase = 'у тебя дела'
    >>> [word for word in words.split(' ') if word in phrase.split(' ')] == words.split(' ')
    False
    >>>
    Ответ написан
    Комментировать
  • Поиск вне зависимости от позиции?

    @Samad_Samadovic
    Попробуйте оператор in
    A = input()
    if 'дела' in A.lower() and 'как' in A.lower():
        print(A);
    Ответ написан
    Комментировать
  • Поиск вне зависимости от позиции?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    пробуй
    как.+дела
    как.*дела
    Ответ написан
    2 комментария
  • Как лучше читать файл?

    @alekssamos
    Программист любитель
    Если файл большой, например, CSV 4 ГБ, тогда нужно обрабатывать по одной строке за раз.
    То есть примерно так:
    def main():
        original_file = "pp-complete.csv"
        with open(original_file, encoding="UTF-8", newline="") as of:
            reader = csv.reader(of)
            for row in reader:
                Transaction_ID, Price, Date_of_Transfer, Postcode, Property_Type, Old_or_New, Duration,
                            PAON, SAON, Street, Locality, Town_or_City,
                            District, County, PPD_Category_Type, Record_Status = row
    # что-то делаешь дальше именно с этой с одной строкой
    # и идёшь дальше
    Ответ написан
    Комментировать