Создать экземпляр Benedict
можно непосредственно из внешнего источника данных (путь к файлу, URL-адрес или строка данных), передав в конструкторе источник данных и формат данных.
Простые примеры загрузки данных в словарь Benedict
:
from benedict import benedict # использование пути к файлу d = benedict("/path/to/data.yml", format="yaml") # использование URL d = benedict("https://localhost:8000/data.xml", format="xml") # или d = benedict("https://localhost:8000/data/", format="json") # использование строки данных d = benedict('{"a": 1, "b": 2, "c": 3, "x": 7, "y": 8, "z": 9}')
Представленные ниже методы упрощают операции ввода-вывода с распространенными форматами данных:
base64
,csv
,ini
,json
,pickle
,plist
,query-string
,toml
,xls
,xml
,yaml
.
- Во всех методах
from_*
первым аргументом может быть:URL
, путь к файлу или строка данных.- Во всех методах
to_*
, если указанfilepath='...'
, то выходные данные дополнительно будут сохранены по указанному пути к файлу.
Benedict.from_base64()
загружает данные в формате base64
,Benedict.to_base64()
сохраняет данные в формате base64
,Benedict.from_csv()
загружает данные в формате csv
,Benedict.to_csv()
сохраняет данные в формате csv
,Benedict.from_ini()
загружает данные в формате ini
,Benedict.to_ini()
сохраняет данные в формате ini
,Benedict.from_json()
загружает данные в формате json
,Benedict.to_json()
сохраняет данные в формате json
,Benedict.from_pickle()
загружает данные в формате pickle
,Benedict.to_pickle()
сохраняет данные в формате pickle
,Benedict.from_plist()
загружает данные в формате Apple,Benedict.to_plist()
сохраняет данные в формате Apple,Benedict.from_query_string()
загружает данные в формате query-string
,Benedict.to_query_string()
сохраняет данные в формате query-string
,Benedict.from_toml()
загружает данные в формате toml
,Benedict.to_toml()
сохраняет данные в формате toml
,Benedict.from_xls()
загружает данные из файла в формате .xls
, .xlsx
.xlsm
,Benedict.from_xml()
загружает данные в формате xml
,Benedict.to_xml()
сохраняет данные в формате xml
,Benedict.from_yaml()
загружает данные в формате yaml
,Benedict.to_yaml()
сохраняет данные в формате yaml
.Benedict.from_base64(s, subformat="json", encoding="utf-8", **kwargs)
:Метод Benedict.from_base64()
пробует загрузить/декодировать данные в формате base64
и вернуть их как экземпляр словаря Benedict
.
s
может принимать: URL-адрес, путь к файлу или строку данных.subformat
позволяет выбрать используемый подформат: ('csv', 'json', 'URL', 'toml', 'xml', 'yaml'), по умолчанию: 'json'.encoding
позволяет выбрать кодировку, по умолчанию utf-8.С помощью **kwargs
можно передать определенные параметры для используемой функции base64.b64decode()
.
В случае сбоя возникает ошибка ValueError
.
d = benedict.from_base64(filepath="path/to/base64/file.json", subformat="json")
Benedict.to_base64(subformat="json", encoding="utf-8", filepath=None, **kwargs)
:Метод Benedict.to_base64()
возвращает экземпляр dict
, закодированный в формате base64
, и при необходимости сохраняет его по указанному пути к файлу.
subformat
позволяет выбрать используемый подформат: ('csv', 'json', 'URL', 'toml', 'xml', 'yaml'), по умолчанию: 'json'.encoding
позволяет выбрать кодировку, по умолчанию utf-8.С помощью **kwargs
можно передать определенные параметры для используемой функции base64.b64encode()
.
В случае сбоя возникает ошибка ValueError
.
d.to_base64(subformat="json", filepath="path/to/save/file.json")
Benedict.from_csv(s, columns=None, columns_row=True, **kwargs)
:Метод Benedict.from_csv()
пробует загрузить/декодировать данные в формате csv
и вернуть их как экземпляр Benedict
.
s
может принимать: URL-адрес, путь к файлу или строку данных.columns
позволяет указать имена столбцов csv
(используются в качестве ключей словаря), в случае его отсутствия. По умолчанию: None
- в этом случае в качестве ключей будут использоваться значения первой строки csv
. columns_row
отвечает за использование значений первой строки csv
в качестве данных словаря. По умолчанию: True
- первая строка csv
используется в качестве ключей. Если columns_row=False
, то первая строка csv
используется как данные и в этом случае columns
должен содержать список имен столбцов.С помощью **kwargs
можно передать дополнительные аргументы в используемую функцию csv.reader()
.
В случае сбоя возникает ошибка ValueError
.
from benedict import benedict # есть строка в формате `csv` # (можно указать путь к файлу), # которая не имеет имен столбцов s = ("Alice,Computer Science\nBob,Electrical Engineering\n" "Charlie,Mathematics\nJack,Mathematics") d = benedict.from_csv(s, columns=['col1', 'col2'], columns_row=False) print(d.dump()) # { # "values": [ # {"col1": "Alice", "col2": "Computer Science"}, # {"col1": "Bob", "col2": "Electrical Engineering"}, # {"col1": "Charlie", "col2": "Mathematics"}, # {"col1": "Jack", "col2": "Mathematics"} # ] # }
Benedict.to_csv(key="values", columns=None, columns_row=True, filepath=None, **kwargs)
:Метод Benedict.to_csv()
возвращает список словарей в текущем словаре, закодированных в формате csv
, и при необходимости сохраняет его по указанному пути к файлу filepath
.
key
указывает на ключ элемента словаря benedict
, который содержит список словарей для выгрузки, по умолчанию: 'values'
.columns
позволяет указать список ключей, которые необходимо выгрузить. По умолчанию: None
- будут использоваться все ключи из первого элемента списка словарей.columns_row
отвечает за вывод первой строки, которая содержит имена столбцов (ключей).С помощью **kwargs
можно передать дополнительные аргументы в используемую функцию csv.writer()
.
В случае сбоя возникает ValueError
.
from benedict import benedict data = { 'students': [ {'name': 'Alice', 'age': 20, 'major': 'Computer Science'}, {'name': 'Bob', 'age': 21, 'major': 'Electrical Engineering'}, {'name': 'Charlie', 'age': 19, 'major': 'Mathematics'}, {'name': 'Jack', 'age': 16, 'major': 'Mathematics'}, ], 'employees': [ {'name': 'Josh', 'age': 24, 'major': 'Mathematics'}, {'name': 'Lindsey', 'age': 24, 'major': 'Computer Science'}, {'name': 'Steve', 'age': 42, 'major': 'Electrical Engineering'}, {'name': 'Tina', 'age': 30, 'major': 'Computer Science'}, ] } d = benedict(data) # создаем `csv` без строки, содержащей имена столбцов s = d.to_csv(key="students", columns=['name', 'major'], columns_row=False) print(s) # Alice,Computer Science # Bob,Electrical Engineering # Charlie,Mathematics # Jack,Mathematics
Benedict.from_ini(s, **kwargs)
:Метод Benedict.from_ini()
пробует загрузить/декодировать данные, закодированные в ini
формате, и возвращает их как экземпляр Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем configparser
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
from benedict import benedict s = """ [DEFAULT] AliveInterval = 45 ForwardX11 = yes [one] User = hg [two] Port = 50022 ForwardX11 = no """ d = benedict.from_ini(s) print(d.dump()) # { # "aliveinterval": 45, # "forwardx11": true, # "one": { # "aliveinterval": 45, # "forwardx11": true, # "user": "hg" # }, # "two": { # "aliveinterval": 45, # "forwardx11": false, # "port": 50022 # } # }
Benedict.to_ini(filepath, **kwargs)
:Метод Benedict.to_ini()
возвращает экземпляр словаря dict
, закодированный в формате ini
, и при необходимости сохраните его по указанному пути к файлу filepath
.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем configparser
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
# выгрузим получившийся словарь # из примера `benedict.from_ini()` s = d.to_ini() print(s) # [DEFAULT] # aliveinterval = 45 # forwardx11 = True # # [one] # aliveinterval = 45 # forwardx11 = True # user = hg # # [two] # aliveinterval = 45 # forwardx11 = False # port = 50022
Benedict.from_json(s, **kwargs)
:Метод Benedict.from_json()
пробует загрузить/декодировать данные в формате json
и вернуть их как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем json
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
from benedict import benedict data = { 'name': 'Josh', 'occupation': 'Data scientist', 'awesome': '', 'skills': { 'prog': { 'Python': '5 stars', 'JS': '4 stars' } } } d = benedict.from_json(data) print(d.dump()) # { # "awesome": "", # "name": "Josh", # "occupation": "Data scientist", # "skills": { # "prog": { # "JS": "4 stars", # "Python": "5 stars" # } # } # }
Benedict.to_json(filepath=None, **kwargs)
:Метод Benedict.to_json()
возвращает экземпляр словаря dict
в формате json
, при необходимости сохраняет его по указанному пути к файлу filepath
в виде строки.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем json
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
# выгрузим получившийся словарь # из примера `benedict.from_json()` s = d.to_json() print(s) # '{"name": "Josh", "occupation": "Data scientist", "awesome": "", "skills": {"prog": {"Python": "5 stars", "JS": "4 stars"}}}'
Benedict.from_pickle(s, **kwargs)
:Метод Benedict.from_pickle()
пробует загрузить/декодировать данные s
в формате pickle
, закодированные Base64
, и возвращает его как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем pickle
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_pickle(filepath=None, **kwargs)
:Метод Benedict.to_pickle()
возвращает экземпляр словаря dict
в формате pickle
, закодированные Base64
, данные при необходимости можно сохранить, передав аргумент filepath
в виде строки.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем pickle
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.from_plist(s, **kwargs)
:Метод Benedict.from_plist()
пробует загрузить/декодировать данные s
в формате Apple .plist
и возвращает его как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем plistlib
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_plist(filepath=None, **kwargs)
:Метод Benedict.to_plist()
возвращает экземпляр словаря dict
в формате Apple .plist
, данные при необходимости можно сохранить, передав аргумент filepath
в виде строки.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем pickle()
, при выполнении соответствующей операции.
Benedict.from_query_string(s, **kwargs)
:Метод Benedict.from_query_string()
пробует загрузить/декодировать данные в формате query-string
и вернуть их как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_query_string(filepath=None, **kwargs)
:Метод Benedict.to_query_string()
возвращает экземпляр словаря dict
в формате query-string
, при необходимости сохраняет его по указанному пути к файлу filepath
в виде строки.
В случае сбоя возникает ошибка ValueError
.
Benedict.from_toml(s, **kwargs)
:Метод Benedict.from_toml()
пробует загрузить/декодировать данные, закодированные в формате toml
, и возвращает их как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем toml
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_toml(filepath=None, **kwargs)
:Метод Benedict.to_toml()
возвращает экземпляр словаря dict
в формате toml
, при необходимости сохраняет его по указанному пути к файлу filepath
в виде строки.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем toml
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.from_xls(s, sheet=0, columns=None, columns_row=True, **kwargs)
:Метод Benedict.from_xls()
пробует загрузить/декодировать данные, представленные в формате электронных таблиц .xml
и .xmls
, и возвращает их как экземпляр словаря Benedict
.
s
может принимать: URL-адрес, путь к файлу или строку данных.sheet
это рабочего листа книги Excel.columns
позволяет указать имена столбцов csv
(используются в качестве ключей словаря), в случае его отсутствия. По умолчанию: None
- в этом случае в качестве ключей будут использоваться значения первой строки csv
. columns_row
отвечает за использование значений первой строки csv
в качестве данных словаря. По умолчанию: True
- первая строка csv
используется в качестве ключей. Если columns_row=False
, то первая строка csv
используется как данные и в этом случае columns
должен содержать список имен столбцов.Подробнее об использовании аргументов смотрите в примерах к методу Benedict.from_csv()
.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулями:
В случае сбоя возникает ошибка ValueError
.
Benedict.from_xml(s, **kwargs)
:Метод Benedict.from_xml()
пробует загрузить/декодировать данные, закодированные в формате xml
, и возвращает их как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем xmltodict
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_xml(**kwargs)
:Метод Benedict.to_xml()
возвращает экземпляр словаря dict
в формате xml
, при необходимости сохраняет его по указанному пути к файлу filepath
в виде строки.
В случае сбоя возникает ошибка ValueError
.
Benedict.from_yaml(s, **kwargs)
:Свойство Benedict.from_yaml
пробует загрузить/декодировать данные, закодированные в yaml
формате, и возвращает их как экземпляр словаря Benedict
.
Аргумент s
может принимать: URL-адрес, путь к файлу или строку данных. С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем pyyaml
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.
Benedict.to_yaml(filepath=None, **kwargs)
:Свойство Benedict.to_yaml
возвращает экземпляр словаря dict
в формате yaml
, при необходимости сохраняет его по указанному пути к файлу filepath
в виде строки.
С помощью **kwargs
можно передать дополнительные аргументы, принимаемые модулем pyyaml
, при выполнении соответствующей операции.
В случае сбоя возникает ошибка ValueError
.