Работа с посторонними файлами в python
Довольно странный вопрос. К примеру, я создал файл с моим собственным расширением - stck. Могу ли я пользоваться этим файлом в python не как со строкой, а как с файлами JSON? То есть, к примеру, там такой код:
{
"text": "qwerty"
}
если я буду работать с этим файлом как с обычным текстовым -
with open('data.stck', "r+") as stckFile:
strg = stckFile.read()
, то импортируется он как строка. Мне же необходимо работать с ним как с объектом (к примеру).
Подскажите, есть ли какое-либо решение, кроме как переписать модуль, встроенный в язык - json по свою гребенку?
Ответы (2 шт):
Используй стандартную библиотеку json. Чтобы получить json (словарь в Python) используется класс JSONDecoder.
Пример:
>>> import json
>>> with open('data.stck') as f:
... string_from_file = f.read().replace('\n', '')
...
>>> string_from_file
'{"text": "qwerty"}'
>>> dec = json.JSONDecoder()
>>> j = dec.raw_decode(string_from_file)[0]
>>> j
{'text': 'qwerty'}
>>> j['text']
'qwerty'
Расширение файла не имеет значения (это просто часть имени) - важно содержимое. Если содержимое файла является корректным json, то с файлом можно работать с помощью модуля json:
import json
with open('data.stck', "r+") as stckFile:
strg = json.load(stckFile)
# или strg = json.loads(stckFile.read())