Задать вопрос
  • Как получать "чистое" значение ячейки в Google Sheets?

    shabelski89
    @shabelski89
    engineer
    Вам нужно просто извлечь значение из JSON. если посмотреть внимательно то перед вами словарь, и нужный элемент получается по ключу.
    А то что Вы делаете описано подробно тут
    ну и в качестве домашнего задания разберитесь по строчкам кода
    response = {'majorDimension': 'COLUMNS', 'range': 'guid!B2', 'values': [['102126989']]}
    response.get('values', 'No key values')
    [['102126989']]
    result = response.get('values', 'No key values')
    type(result)
    <class 'list'>
    result[0]
    ['102126989']
    result[0][0]
    '102126989'
    values = result[0][0]
    values
    '102126989'
    v = response['values'][0][0]
    v
    '102126989'
    import json
    from_google_sheet = '[{"majorDimension": "COLUMNS", "range": "guid!B2", "values": [["1"]]},{"majorDimension": "COLUMNS", "range": "guid!B2", "values": [["2"]]},{"majorDimension": "COLUMNS", "range": "guid!B2", "values": [["3"]]}]'
    json_from_google_sheet = json.loads(from_google_sheet)
    json_from_google_sheet
    [{'majorDimension': 'COLUMNS', 'range': 'guid!B2', 'values': [['1']]}, {'majorDimension': 'COLUMNS', 'range': 'guid!B2', 'values': [['2']]}, {'majorDimension': 'COLUMNS', 'range': 'guid!B2', 'values': [['3']]}]
    type(json_from_google_sheet)
    <class 'list'>
    for values in json_from_google_sheet:
        print(values['values'][0][0])
        
    1
    2
    3
    Ответ написан
    Комментировать
  • Задержка для парсера сайта?

    shabelski89
    @shabelski89
    engineer
    есть вероятность что это JS даёт задержку , вот тут предлагаю элегантное решение

    from bs4 import BeautifulSoup
    from selenium import webdriver
    
    url = "http://legendas.tv/busca/walking%20dead%20s03e02"
    browser = webdriver.PhantomJS()
    browser.get(url)
    html = browser.page_source
    soup = BeautifulSoup(html, 'lxml')
    a = soup.find('section', 'wrapper')
    Ответ написан
    Комментировать
  • Как передать большой файл через сокеты на Python?

    shabelski89
    @shabelski89
    engineer
    Ответ написан
    Комментировать
  • Почему не работает print?

    shabelski89
    @shabelski89
    engineer
    не работает из-за непонимания того что Вы пытаетесь сделать.
    def talk():
      myEmi = input("")  # 1 присваиваем переменной myEmi значение введенное в input (это должно быть имя файла?) а кажется что сюда хотели вводить слово которое нужно искать в файле
      with open(f"BD1/{myEmi}.txt",  "r") as file:  # 2 открытие файла на чтение с именем из п.1
        if file.read() == myEmi:  # 3 file.read() читает содержимое file и возвращает содержимое ввиде строки, а дальше вы сравниваете с введенным словом, которое же почему и в имени файла?! Нужно использовать оператор IN вместо ==, а ещё правильнее прочитать файл так result = file.readlines() , что вернёт список строк и потом уже искать в списке элемент.
          print("Это слово есть!")
          talk()
        else:
          with open(f"BD1/{myEmi}.txt",  "w") as file:
            file.write(myEmi)
            talk()
    talk()   # 0 вызов функции talk()
    Ответ написан
    Комментировать
  • Как на питоне проверять статус платежа каждые 5 минут в telegram боте?

    shabelski89
    @shabelski89
    engineer
    Самое простое запустить функцию проверки в отдельном потоке. Примеры потоков тут.
    Ответ написан
    Комментировать
  • Зачем в python 3 функция format у строк?

    shabelski89
    @shabelski89
    engineer
    f нотация, появилась в питоне 3.6, в более ранних версиях был .format . Функицонально различий нет, есть различие в читаемости и лаконичности, я использую f нотацию.
    Ответ написан
    Комментировать
  • Как считать байт код файла?

    shabelski89
    @shabelski89
    engineer
    Зачем?
    Чтобы считать байт-код файла, его нужно скопилировать.
    пример питон файла
    root@vs1:~/project/test_nuitka# cat test_program.py
    def test():
        print('passed')
    
    if __name__ == "__main__":
        test()

    пример компиляции
    root@vs1:~/project/test_nuitka# python3
    Python 3.7.3 (default, Jan 22 2021, 20:04:44)
    [GCC 8.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import py_compile
    >>> import os
    >>> os.listdir()
    ['include', 'share', 'test_program.py', 'lib64', 'bin', 'pyvenv.cfg', 'lib', 'ping.py']
    >>> py_compile.compile('test_program.py')
    '__pycache__/test_program.cpython-37.pyc'


    полученынй файл перемещаем куда угодно с помощью shutil.

    это если под байт-кодом понималось именно это, а ваш код показывает что нужно просто переместить файл с помощью shutil, вот примеры.
    Ответ написан
    Комментировать
  • Что не так со списком в python?

    shabelski89
    @shabelski89
    engineer
    1e - если используете with, то не нужно закрывать файл явно, при выходе из блока with сам это сделает.
    2е - метод read() возврщает строку, то есть answers - строка, убедиться можно сделав
    print(type(answer))
    уверен что answer[0] - это пробел
    3е - чтобы получить список, нужно вместо read() использовать readlines()
    Ответ написан
    1 комментарий
  • Очиститель файла после знака?

    shabelski89
    @shabelski89
    engineer
    class FileHandler:
        def __init__(self, filename):
            self.filename = filename
    
        def read(self):
            with open(self.filename, 'r', encoding='utf-8') as in_file, \
                    open(f'result_{self.filename}', 'w', encoding='utf-8') as out_file:
                for line in in_file:
                    if line:
                        out_line = self.__parse(line)
                        out_file.write(out_line)
                        out_file.write("\n")
    
        @staticmethod
        def __parse(line):
            result, *_ = line.split(":")
            return result
    
    
    if __name__ == "__main__":
        f = FileHandler(r'yot_file_name')
        f.read()
    Ответ написан
    Комментировать
  • Как записать текст в yaml файл в python?

    shabelski89
    @shabelski89
    engineer
    Ваш костыль не нужен освсем, есть готовые библиотеки - yaml
    Ваши данные должны быть списками и словарями питона, которые дампятся в yaml файл.
    Ответ написан
    Комментировать
  • Как правильно прочитать файл с сохранением типов данных?

    shabelski89
    @shabelski89
    engineer
    не нужно ничего писать, нужно файл с данными сохранять в валидный JSON.
    например:
    {"0": [1,2,3]}
    читаем
    import json
    
    with open('some_file.txt') as jfile:
        data = json.load(jfile)
        
    data
    {'0': [2, 4, 5]}
    data['0']
    [2, 4, 5]
    data['0'][0]
    2
    type(data['0'][0])
    <class 'int'>
    Ответ написан
    Комментировать
  • Как реализовать ввод значения как часть параметра?

    shabelski89
    @shabelski89
    engineer
    не совсем понятно что именно не получается, но вот пример
    #!/bin/bash
    
     echo "Yes or No?"
     read -p "Answer: " varanswer
     echo $varanswer
    if [ "$varanswer" = "Yes" ]; then
        read -p "KEY: " varkey
        echo $varkey
    else
        echo "do script"
    fi
    Ответ написан
    1 комментарий
  • Как получить имя ячейки ttk.treeview как переменную при выборе её кликом?

    shabelski89
    @shabelski89
    engineer
    Нужно установить фокус и потом получать данные из выделенной строки TreeView, примерно так
    row_id = table.focus()
    print(row_id)
    if row_id:
        order_num = table.item(row_id)['values'][0]
        print(order_num)
    Ответ написан
    4 комментария
  • Почему не передается полностью значение переменной через API Telegram?

    shabelski89
    @shabelski89
    engineer
    Потому что пробелы заменить нужно на %20
    #!/bin/bash
    API_KEY="some_key"
    RES=$(echo "my time is $(date +%F)" | sed  "s/ /%20/g")
    echo $RES
    CHAT_ID=11111
    curl -s "https://api.telegram.org/bot$API_KEY/sendMessage?chat_id=$CHAT_ID&text="$RES"" >/dev/null
    Ответ написан
  • Как получать отчеты из БД?

    shabelski89
    @shabelski89
    engineer
    Никакого спец софта не нужно.
    1. Делаете на основе готовых запросов Представления (view) там только селекты разрешаем. тут
    2. Делаете в БД всех нужных пользователей с нужными правами доступа к каждой вью.
    3. Пользователи через удобного клиента СУБД подключаются и видят только то что им разрешили
    Ответ написан
    Комментировать
  • Я тут на быдлокодил, можно ли оптимизировать?

    shabelski89
    @shabelski89
    engineer
    Вот такое:
    if message.text in ['казино', 'Казино']:
    
    if message.text.lower() == "казино":


    или такое

    result = 'Выпало ' + str(a) + ', ты выиграл ' + str(bet) + ' мои поздравления!\nБанк ' + str(bank)
    result = f'Выпало {a}, ты выиграл {bet} - мои поздравления!\nБанк {bank}'


    ну и выше правильно написали, нечего тут "оптимизировать", кода пять строчек, логики тоже.
    Ответ написан
  • Как отправить сообщение Telegram боту(на python), после выполнения успешной команды ping?

    shabelski89
    @shabelski89
    engineer
    Для этой задачи не нужны библиотеки типа телебот.
    Нужно:
    1) токен
    2) python requests
    3) ваш код и логика
    4) отправить через http post сообщение
    Пример такого бота тут
    Ответ написан
    Комментировать
  • Как в базе данных SQLite3 к столбцу добавить autoincrement?

    shabelski89
    @shabelski89
    engineer
    Попробуйте так
    DELETE FROM animal;
    DELETE FROM sqlite_sequence WHERE name = 'animal';

    потому пробуйте
    cursor.execute("INSERT INTO animal (kind, species, birth_day, weight) VALUES (?, ?, ?, ?)", (kind1, species1, birth1, weight1))
    Ответ написан
    Комментировать
  • Можно ли подставить имя файла из ls?

    shabelski89
    @shabelski89
    engineer
    #!/bin/bash
    FILES="/root/temp/*"
    
    #echo $FILES
    
    for file in $FILES
    do
    if [ "${file: -4}" == ".zip" ]; then
     echo "some string with name of $file"
    fi
    done


    Тратим пару часов на чтение статей и готово!
    Ответ написан
    1 комментарий
  • Как прикрепить фотографию к элементу списка в python?

    shabelski89
    @shabelski89
    engineer
    во-первых, не нужно называть переменные ключевыми словами ЯП (list )
    во-вторых, в данном случае лучше подходит структура данных - словарь
    from pprint import pprint
    cards = {'card_' + str(x): {'name': x, 'desc': x, 'photo': x} for x in range(1,22)}
    cards['card_21']['name'] = 'Мир'
    cards['card_21']['desc'] = 'Завершенность бла бла бла'
    cards['card_21']['photo'] = 'C:/Tools/tmp/card_21.png'
    pprint(cards)
    {'card_1': {'desc': 1, 'name': 1, 'photo': 1},
     'card_10': {'desc': 10, 'name': 10, 'photo': 10},
     'card_11': {'desc': 11, 'name': 11, 'photo': 11},
     'card_12': {'desc': 12, 'name': 12, 'photo': 12},
     'card_13': {'desc': 13, 'name': 13, 'photo': 13},
     'card_14': {'desc': 14, 'name': 14, 'photo': 14},
     'card_15': {'desc': 15, 'name': 15, 'photo': 15},
     'card_16': {'desc': 16, 'name': 16, 'photo': 16},
     'card_17': {'desc': 17, 'name': 17, 'photo': 17},
     'card_18': {'desc': 18, 'name': 18, 'photo': 18},
     'card_19': {'desc': 19, 'name': 19, 'photo': 19},
     'card_2': {'desc': 2, 'name': 2, 'photo': 2},
     'card_20': {'desc': 20, 'name': 20, 'photo': 20},
     'card_21': {'desc': 'Завершенность бла бла бла',
                 'name': 'Мир',
                 'photo': 'C:/Tools/tmp/card_21.png'},
     'card_3': {'desc': 3, 'name': 3, 'photo': 3},
     'card_4': {'desc': 4, 'name': 4, 'photo': 4},
     'card_5': {'desc': 5, 'name': 5, 'photo': 5},
     'card_6': {'desc': 6, 'name': 6, 'photo': 6},
     'card_7': {'desc': 7, 'name': 7, 'photo': 7},
     'card_8': {'desc': 8, 'name': 8, 'photo': 8},
     'card_9': {'desc': 9, 'name': 9, 'photo': 9}}

    как понятно из кода выше, в словарь добавляется ключ 'photo' и значение путь до файла.
    и дальше нужно передавать его через бота прочитав файл
    with open(cards['card_21']['photo'], "rb") as file:
        data = file.read()
    bot.send_photo(message.from_user.id, photo=data)

    но перед эти нужно написать функцию, которая будет принимать аргумент - ИД карты и подставлять его в open()
    Ответ написан
    Комментировать