Запись списка в файл и чтение содержимого обратно в список с помощью simplejson

Я хотел бы написать список в файл и прочитать обратно содержимое файла в список. Я могу записать список в файл, используя simplejson следующим образом:

f = open("data.txt","w")
l = ["a","b","c"]
simplejson.dump(l,f)
f.close()

Теперь, чтобы прочитать файл обратно, я делаю

file_contents = simplejson.load(f)

Но, я думаю, file_contents находится в формате json. Есть ли способ преобразовать его в список?

Благодарю вас.

2 ответа

Решение
with open("data.txt") as f:
  filecontents = simplejson.load(f)

действительно перезагружает данные именно так, как вы указываете. Что может сбить вас с толку, так это то, что все строки в JSON всегда имеют Unicode - JSON (как и Javascript) не имеет тип данных "строка байтов", отличный от "Unicode".

Изменить У меня нет старого simplejson больше (поскольку его текущая версия стала частью стандартной библиотеки Python как json), но вот как это работает json маскироваться под simplejson в надежде избежать смущения вас!-)...

>>> import json
>>> simplejson = json
>>> f = open("data.txt","w")
>>> l = ["a","b","c"]
>>> simplejson.dump(l,f)
>>> f.close()
>>> with open("data.txt") as f: fc = simplejson.load(f)
... 
>>> fc
[u'a', u'b', u'c']
>>> fc.append("d")
>>> fc
[u'a', u'b', u'c', 'd']
>>> 

Если этот точный код (чистый из первых двух строк, если то, что вы делаете вместо import simplejson конечно;-) не соответствует тому, что вы наблюдаете, вы нашли ошибку, поэтому важно сообщить, какие версии Python и simplejson вы используете и точно, какую ошибку вы получаете, в комплекте с traceback (отредактируйте свой Q, чтобы добавить эту - очевидно важную - информацию!).

.read_file а также .write_file Варианты Unipath действительно делают это простым.

Другие вопросы по тегам