Tengo un diccionario y estoy intentando 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 vino 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
=
signo, la edición que hice podría hacer el trabajo.str(exDict)
que produciría no siempre será un JSON válido. Una razón desde el fondo de mi cabeza es que las comillas simples no son válidas en un archivo JSON, mientras que pueden estar presentes cuando usamos elstr
método.Lo hago así en Python 3:
with open('myfile.txt', 'w') as f: print(mydictionary, file=f)
fuente
str(mydict)
en un archivo es precisamente porque no necesitaeval
el contenido para recuperar eldict
objeto.eval
es una lista de seguridad y no debería usarse si hay mejores opciones disponibles.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()
fuente
with
declaración al leer y escribir en archivos: stackoverflow.com/questions/3012488/…El problema con su primer bloque de código era que estaba abriendo el archivo como 'r' a pesar de que quería escribir en él usando
'w'
with open('/Users/your/path/foo','w') as data: data.write(str(dictionary))
fuente
Si desea un diccionario que pueda importar desde un archivo por nombre, y también que agregue entradas que estén bien ordenadas y contenga cadenas que desea conservar, puede probar 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
fuente
Para los amantes de la comprensión de listas, esto escribirá todos los
key : value
pares en nuevas líneas endog.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 ]
fuente
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 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.
fuente
exDict = {1:1, 2:2, 3:3} with open('file.txt', 'w+') as file: file.write(str(exDict))
fuente
Puedes hacer lo siguiente:
import json exDict = {1:1, 2:2, 3:3} file.write(json.dumps(exDict))
https://developer.rhino3d.com/guides/rhinopython/python-xml-json/
fuente
import json with open('tokenler.json', 'w') as file: file.write(json.dumps(mydict, ensure_ascii=False))
fuente