导出到文本文件仅在保存的文件中提供一个值

Exporting to text file provides only one value in saved file

我写了一个函数来获取余弦相似度,但是当我必须将结果输出到文本文件时遇到了问题。 for 中的索引变量看起来 returns 我需要的所有整数值,但在我的文本文件中,它只存储一个索引。有人可以帮忙吗?

from scipy.spatial.distance import cosine

def key_consine_similarity(tupple):
    return tupple[1]

def get_computed_similarities(vectors, predicted_vectors, reverse=False):
    data_size = len(df3)
    cosine_similarities = []
    for i in range(data_size):
        cosine_sim_val = (1 - cosine(vectors[i], predicted_vectors[i]))
        cosine_similarities.append((i, cosine_sim_val))

    return sorted(cosine_similarities, key=key_consine_similarity, reverse=reverse)

def display_all_n(sorted_cosine_similarities, n=7735):
    for i in range(n):
        file = open('file.txt', 'w')
        index, consine_sim_val = sorted_cosine_similarities[i]
        file.write(str(index))
        print (index) 
        file.close()


print('Printing all score')
sorted_cosine_similarities = get_computed_similarities(vectors=doc2vec_vectors, predicted_vectors=predicted_vectors)
display_all_n(sorted_cosine_similarities=sorted_cosine_similarities)

输出

Printing all score

3234
2342
3344
5656

file.txt
3234

当您以写入模式打开文件并写入时,所有以前的内容都会被删除。

您遇到的情况是,每次您要写入时都在打开和关闭文件,因此每次写入都会删除前一个文件。

要么只打开文件一次:

def display_all_n(sorted_cosine_similarities, n=7735):
    file = open('file.txt', 'w')
    for i in range(n):
        index, consine_sim_val = sorted_cosine_similarities[i]
        file.write(str(index) + '\n')
        print (index) 
    file.close()

或以附加模式打开文件:

def display_all_n(sorted_cosine_similarities, n=7735):
    for i in range(n):
        file = open('file.txt', 'a')
        index, consine_sim_val = sorted_cosine_similarities[i]
        file.write(str(index) + '\n')
        print (index) 
        file.close()