Задать вопрос
  • Существует ли удобный формат для сохранение конфигурационных файлов для Python?

    @kolchev
    Json это отличный мультиязычный инструмент и при наличии gui для пользователя взаимодействие с данными будет максимально комфортным. Если gui не вариант и нужны обязательно читаемые конфиги, то можно использовать ini или более современную его версию toml. Если их возможностей не хватает то есть yaml,, но лично я считаю что для пользователей он уже будет сложным и уж лучше использовать форматированный json.
    Для python3 можно посмотреть библиотеку sd-format, работающую со своим форматом текстовой записи данных .sd
    К минусам можно отнести её малую известность, отсутствие поддержки для python2, а к плюсам: хорошие возможности, с приоритетом на читабельность, минимум использования служебных символов. В качестве значений можно использовать списки и словари. Простые можно записывать в строку, сложные в столбец. Можно записывать многострочное значение строки. К полезным фишкам можно отнести возможность использовать не только сами данные, но и комментарии к данным.
    Можно рассмотреть вариант использования комбинированного варианта: ini + json. При таком варианте у вас будет масса возможностей для записи любых данных в ваши файлы конфигурации. Это может и не самое удачное решение, но оно достаточно часто используется. Для json можно использовать одноименную библиотеку. Для работы с ini можно использовать библиотеку configparser
    Ответ написан
    Комментировать
  • Как оформить запрос в ABBYY Lingvo API?

    @ArtAVi
    Пример на Python'е
    import requests
    import json
    
    URL_AUTH = 'https://developers.lingvolive.com/api/v1.1/authenticate'
    URL_TRANSLATE = 'https://developers.lingvolive.com/api/v1/Minicard'
    KEY = 'Ключ для доступа к API'
    
    def get_a_word_translation(key: str) -> str:
        headers_auth = {'Authorization': 'Basic ' + KEY}
        auth = requests.post(URL_AUTH, headers=headers_auth)
        if auth.status_code == 200:
            token = auth.text
            headers_translate = {
                'Authorization': 'Bearer ' + token
            }
            params = {
                'text': key,
                'srcLang': 1033,
                'dstLang': 1049
            }
            req = requests.get(
                URL_TRANSLATE, headers=headers_translate, params=params)
            res = req.json()
            try:
                value = res['Translation']['Translation']
                return value
            except TypeError:
                if res == 'Incoming request rate exceeded for 50000 chars per day pricing tier':
                    return res
                else:
                    return None
        else:
            print('Error!' + str(auth.status_code))
    
    if __name__ == "__main__":
        not_translated_words_test = ['victim', 'home', 'root']
        translated_words_test = {}
        for en in not_translated_words_test:
            ru = get_a_word_translation(en)
            if ru == 'Incoming request rate exceeded for 50000 chars per day pricing tier':
                break
            translated_words_test[en] = ru
            save_data_to_json('data/translated_words_test.json',
                              translated_words_test)
    Ответ написан
    Комментировать