Aquí muestro un bucle for que no funciona bien. Lo que imprime es correcto mientras solo escribe la última línea en el archivo .txt. Por ejemplo, imprime:

[0.173] [robe]
[0.493] [tree]
[0.274] [book]

Pero el archivo data01.txt tiene solo una línea:

[0.274] [book]

Lo que espero es que el archivo incluya todo lo que imprime.

for a_word in phrase_model.keys():
    for b_word in phrase_model.keys():
        a_val = phrase_model[a_word]
        b_val = phrase_model[b_word]
        c_word = [a_word, b_word]
        cos_dis = cosine_similarity(a_val, b_val)
        print(str(cos_dis) + str(c_word))
        f = open('data01.txt', 'w')
        f.write(str(cos_dis) + str(c_word))

f.close()
-1
thomas2019 1 oct. 2019 a las 11:22

3 respuestas

La mejor respuesta

Abre el archivo para escribir repetidamente en cada iteración y, por lo tanto, se trunca constantemente.

Simplemente abra el archivo una vez antes de los bucles.

f = open('data01.txt', 'w')

for a_word in phrase_model.keys():
    for b_word in phrase_model.keys():
        a_val = phrase_model[a_word]
        b_val = phrase_model[b_word]
        c_word = [a_word, b_word]
        cos_dis = cosine_similarity(a_val, b_val)
        print(str(cos_dis) + str(c_word))
        f.write(str(cos_dis) + str(c_word))

f.close()
0
Konstantinos Katsantonis 1 oct. 2019 a las 09:19

Estás usando el modo de escritura

f = open('data01.txt', 'w')

En su lugar, deberías usar el modo agregar

f = open('data01.txt', 'a')

Esta es la razón por la que se sobrescriben las líneas y solo se ve la última línea. Lea sobre los diferentes modos aquí

0
pvpkiran 1 oct. 2019 a las 08:24

Has abierto tu archivo en modo write.

        f = open('data01.txt', 'w')

Esto comenzará a sobrescribir el archivo desde el principio.

Debe usar el modo append.

        f = open('data01.txt', 'a')

Esto se agregará al archivo en lugar de sobrescribirse.

0
rdas 1 oct. 2019 a las 08:24
58180762