У меня есть словарь, и я пытаюсь записать его в файл.
exDict = {1:1, 2:2, 3:3}
with open('file.txt', 'r') as file:
file.write(exDict)
Тогда у меня ошибка
file.write(exDict)
TypeError: must be str, not dict
Я исправил эту ошибку, но пришла другая ошибка
exDict = {111:111, 222:222}
with open('file.txt', 'r') as file:
file.write(str(exDict))
Ошибка:
file.write(str(exDict))
io.UnsupportedOperation: not writable
Я понятия не имею, что делать, поскольку я все еще новичок в Python. Если кто знает, как решить проблему, дайте ответ.
ПРИМЕЧАНИЕ: я использую python 3, а не python 2
=
знаку, то внесенное мной правка может сработать.str(exDict)
бы производить не всегда будет действительным в формате JSON. Одна из причин, по которой я задумывался, заключается в том, что одинарные кавычки недопустимы в файле JSON, хотя могут присутствовать, когда мы используемstr
метод.В Python 3 я делаю так:
with open('myfile.txt', 'w') as f: print(mydictionary, file=f)
источник
str(mydict)
в файл, состоит как раз в том, что вам не нужноeval
содержимое, чтобы вернутьdict
объект.eval
является угрозой безопасности и не должен использоваться, если доступны лучшие варианты.fout = "/your/outfile/here.txt" fo = open(fout, "w") for k, v in yourDictionary.items(): fo.write(str(k) + ' >>> '+ str(v) + '\n\n') fo.close()
источник
with
оператор при чтении и записи в файлы: stackoverflow.com/questions/3012488/…Проблема с вашим первым блоком кода заключалась в том, что вы открывали файл как 'r', даже если вы хотели записать в него, используя
'w'
with open('/Users/your/path/foo','w') as data: data.write(str(dictionary))
источник
Если вам нужен словарь, который вы можете импортировать из файла по имени, а также добавляющие записи, которые хорошо отсортированы и содержат строки, которые вы хотите сохранить, вы можете попробовать следующее:
data = {'A': 'a', 'B': 'b', } with open('file.py','w') as file: file.write("dictionary_name = { \n") for k in sorted (data.keys()): file.write("'%s':'%s', \n" % (k, data[k])) file.write("}")
Затем импортировать:
from file import dictionary_name
источник
Для любителей понимания списков все
key : value
пары будут записаны в новых строках вdog.txt
my_dict = {'foo': [1,2], 'bar':[3,4]} # create list of strings list_of_strings = [ f'{key} : {my_dict[key]}' for key in my_dict ] # write string one by one adding newline with open('dog.txt', 'w') as my_file: [ my_file.write(f'{st}\n') for st in list_of_strings ]
источник
Я знаю, что это старый вопрос, но я также подумал поделиться решением, которое не связано с json. Мне лично не нравится json, потому что он не позволяет легко добавлять данные. Если вашей отправной точкой является словарь, вы можете сначала преобразовать его в фрейм данных, а затем добавить в свой текстовый файл:
import pandas as pd one_line_dict = exDict = {1:1, 2:2, 3:3} df = pd.DataFrame.from_dict([one_line_dict]) df.to_csv('file.txt', header=False, index=True, mode='a')
Надеюсь, это поможет.
источник
exDict = {1:1, 2:2, 3:3} with open('file.txt', 'w+') as file: file.write(str(exDict))
источник
Вы можете сделать следующее:
import json exDict = {1:1, 2:2, 3:3} file.write(json.dumps(exDict))
https://developer.rhino3d.com/guides/rhinopython/python-xml-json/
источник
import json with open('tokenler.json', 'w') as file: file.write(json.dumps(mydict, ensure_ascii=False))
источник