lista elementos diccionario convertir agregar python-3.x file dictionary writing file-writing

python 3.x - elementos - ¿Escribir un diccionario en un archivo de texto?



agregar elementos a un diccionario python (8)

El problema con su primer bloque de código fue que estaba abriendo el archivo como ''r'' a pesar de que quería escribir con ''w''

with open(''/Users/your/path/foo'',''w'') as data: data.write(str(dictionary))

Tengo un diccionario y estoy tratando de escribirlo en un archivo.

exDict = {1:1, 2:2, 3:3} with open(''file.txt'', ''r'') as file: file.write(exDict)

Entonces tengo el error

file.write(exDict) TypeError: must be str, not dict

Así que arreglé ese error pero llegó otro error

exDict = {111:111, 222:222} with open(''file.txt'', ''r'') as file: file.write(str(exDict))

El error:

file.write(str(exDict)) io.UnsupportedOperation: not writable

No tengo idea de qué hacer, ya que todavía soy un principiante en Python. Si alguien sabe cómo resolver el problema, proporcione una respuesta.

NOTA: Estoy usando Python 3, no Python 2


En primer lugar, está abriendo el archivo en modo de lectura e intentando escribir en él. Consultar - modos IO python

En segundo lugar, solo puede escribir una cadena en un archivo. Si desea escribir un objeto de diccionario, debe convertirlo en cadena o serializarlo.

import json # as requested in comment exDict = {''exDict'': exDict} with open(''file.txt'', ''w'') as file: file.write(json.dumps(exDict)) # use `json.loads` to do the reverse

En caso de serialización

import cPickle as pickle with open(''file.txt'', ''w'') as file: file.write(pickle.dumps(exDict)) # use `pickle.loads` to do the reverse

Para python 3.x, la importación del paquete pickle sería diferente

import _pickle as pickle


Lo hago así en Python 3:

with open(''myfile.txt'', ''w'') as f: print(mydictionary, file=f)


Sé que esta es una pregunta antigua, pero también pensé en compartir una solución que no involucre a json. Personalmente no me gusta mucho json porque no permite agregar datos fácilmente. Si su punto de partida es un diccionario, primero puede convertirlo en un marco de datos y luego agregarlo a su archivo txt:

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'')

Espero que esto pueda ayudar.


Si desea un diccionario que pueda importar desde un archivo por nombre, y también que agregue entradas que estén bien ordenadas y contengan cadenas que desee conservar, puede intentar esto:

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("}")

Luego para importar:

from file import dictionary_name



import json with open(''tokenler.json'', ''w'') as file: file.write(json.dumps(mydict, ensure_ascii=False))


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()