Reescribiendo mi archivo de texto de puntajes para asegurarme de que solo tenga los últimos 4 puntajes (python)
Anteriormente, con la ayuda de los usuarios de SO, había podido encontrar cómo almacenar un máximo de 4 claves dentro de un documento de Python con la propiedad maxlength dentro del diccionario.
Ahora quiero ir más allá. A continuación se muestra un archivo de texto con todos losreciente decenas de mis participantes: Dave, Jack y Adam.
Jack:10
Dave:20
Adam:30
Jack:40
Adam:50
Dave:60
Jack:70
Dave:80
Jack:90
Jack:100
Dave:110
Dave:120
Adam:130
Adam:140
Adam:150
Ahora, aquí está mi código que me permite ver los últimos 4 puntajes en Python:
import collections
from collections import defaultdict
scores_guessed = collections.defaultdict(lambda: collections.deque(maxlen=4))
with open('Guess Scores.txt') as f:
for line in f:
name,val = line.split(":")
scores_guessed[name].appendleft(int(val))
for k in sorted(scores_guessed):
print("\n"+k," ".join(map(str,scores_guessed[k])))
writer = open('Guess Scores.txt', 'wb')
for key, value in scores_guessed.items():
writer.writerow([key,':',value])
Claramente, imprimirá el siguiente resultado para el diccionario:
Adam 150 140 130 50
Dave 120 110 80 60
Jack 100 90 70 40
sin embargo, Quiero que el archivo me lea los últimos cuatro resultados en orden alfabético:
Adam:150
Adam:140
Adam:130
Adam:50
Dave:120
Dave:110
Dave:80
Dave:60
Jack:100
Jack:90
Jack:70
Jack:40
Pensé que este bloque de código funcionaría:
for key, value in scores_guessed.items():
writer.writerow([key,':',value])
Sin embargo, esto me devuelve el resultado:
AttributeError: '_io.BufferedWriter' object has no attribute 'writerow'
Por ejemplo, si Adam obtuvo un puntaje de 200, quiero que el score_guessed sea reescrito como:
Adam:200
Adam:150
Adam:140
Adam:130
¿Qué va mal?
ACTUALIZAR - En respuesta a la primera respuesta a continuación, he editado el último bloque de código para esto:
for key, value in scores_guessed.items():
writer.write("{}:{}\n".format(key,value))
Sin embargo, me da este mensaje: writer.write ("{}: {} \ n" .format (clave, valor)) TypeError: 'str' no es compatible con la interfaz del búfer
¿Qué está pasando?