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