首页 > 解决方案 > 如何解决写入文件的问题?

问题描述

我有一个奇怪的问题。输出下面的代码是一个 'software developer' 'software engennering' 'programming' 已经写在上面的文件。我希望拥有list_of_lists. 你能看出问题在哪里吗?

list_of_lists=[['software developer', 'software engennering','programming'], ['data scientist', 'data analysis', 'AI developer']]

for x in range(0,len(list_of_lists)):               #for each cluster, do : 
    
    print( "=============== x = ",x," ================")              #will denote cluster number
    docs = list_of_lists[x]                                         
    fw = open("/Volumes/hard/Skyhive/one/list.txt",'w')
    fw.write((','.join(docs)).replace(","," "))                     #writing everything of one cluster in a file.
    countDocuments = len(docs)

标签: pythonfilefor-loopwrite

解决方案


你有2个问题-

  1. 您一遍又一遍地打开文件而不关闭它。

  2. w在第二次打开它,而不是a.

如果您希望每次都重新打开文件,那么您应该在循环结束时关闭它。同样,第一次打开时应该使用w,第二次使用a表示追加,并将追加到文件中,而不是重写。

假设您希望编写整个内容,一个更简单的解决方案是从循环外部打开文件:

list_of_lists=[['software developer', 'software engennering','programming'], ['data scientist', 'data analysis', 'AI developer']]

fw = open("/Volumes/hard/Skyhive/one/list.txt",'w')

for x in range(0,len(list_of_lists)):               #for each cluster, do : 
    
    print( "=============== x = ",x," ================")              #will denote cluster number
    docs = list_of_lists[x]                                         
    
    fw.write((','.join(docs)).replace(","," "))                     #writing everything of one cluster in a file.
    countDocuments = len(docs)

fw.close()

推荐阅读