使用python写入文件

Writing to file using Python

本问题已经有最佳答案,请猛点这里访问。

我有一个名为output.txt的文件,我想从代码周围的几个函数写入它,其中一些函数是递归的。问题是,每次我写东西时,我都需要一次又一次地打开文件,然后我以前写的所有东西都会被删除。我很确定有一个解决方案,以前在这里问的所有问题中都没有找到。

1
2
3
4
5
6
7
8
9
10
def CutTable(Table, index_to_cut, atts, previousSv, allOfPrevSv):
    print ('here we have:')
    print atts
    print index_to_cut
    print Table[2]
    tableColumn=0
    beenHere = False
    for key in atts:
        with open("output.txt","w") as f:
            f.write(key)

从另一个功能:

1
2
3
4
5
6
7
def EntForAttribute(possibles,yesArr):
svs = dict()
for key in possibles:
    svs[key]=(yesArr[key]/possibles[key])
for key in possibles:
        with open("output.txt","w") as f:
            f.write(key)

我所有的输出都是最后一个写在函数中的输出。


打开文件时需要更改第二个标志:

  • 仅用于写入的w(具有相同名称的现有文件将擦除)
  • a打开文件进行附加

您的代码应该是:

1
with open("output.txt","a") as f:

我认为您需要在append模式下打开文件(如这里所回答的:在python中append to file),如下所示:

1
2
with open("output.txt","a") as f:
    ## Write out


每次进入和退出with open...块时,都会重新打开文件。正如其他答案所提到的,您每次都要覆盖文件。除了切换到附加,交换您的withfor循环可能是个好主意,因此您只需为每一组写入打开文件一次:

1
2
3
with open("output.txt","a") as f:
    for key in atts:
        f.write(key)

简短的回答。将文件描述符中的"w"更改为"a"以进行追加。

1
2
with open("test.txt","a") as myfile:
    myfile.write("appended text")

此线程中已回答此问题。如何附加到文件?