Writelines(python)清空了应该写入的文本文件,且未写入任何内容
我正在做的事情其实很简单,但不知为什么,没法把内容写入我需要的文本文件。
我首先获取了用户的输入,并把它存储在assoc
这个变量里。这个步骤没问题,因为我可以随时打印出assoc
,它的值看起来也正常。
接下来,我根据assoc
的值是0、1还是2,打开不同的文件。我读取所有的行,并把读取到的内容存储在beta
这个变量里,然后我计算beta
的长度,并把这个长度赋值给prodlen
,再在prodlen
上加1,把新的值赋给localid
,最后关闭这个文件对象。我提到这些是因为我担心我可能漏掉了什么重要而简单的东西。
if assoc==0:
fob=open('pathto/textfile1.txt','r')
if assoc==1:
fob=open('pathto/textfile2.txt','r')
if assoc==2:
fob=open('pathto/textfile3.txt','r')
beta=fob.readlines();
prodlen=len(beta);
localid=prodlen+1;
fob.close;
在获取用户输入、打开文件、列出内容并读取长度后,我又用用户的输入来打开文件,这次是为了写入内容。(我只列出了一个可能的条件语句,因为其他的条件语句基本相同,只是写入的文件和VALUE
这个字符串不同。)我在beta
的末尾添加了一个换行符\n
,后面跟着一个字符串,这里用VALUE
表示。然后我把localid
以字符串的形式加到最后。
if assoc==0:
fob=open('pathto/textfile1.txt','w')
beta.append("\nVALUE"+str(localid))
print (beta)
fob.writelines(beta)
不过,我真正的问题出在最后两行。当我打印beta
时,它包含了我刚刚添加的新值。但当我尝试把这个列表写入文件时,它却把文件里原有的数据清空了,什么也没写进去! 我还是个Python新手,所以请尽量把解决方案简单点(如果可以的话)。我觉得这个问题的解决方法应该比较简单,我可能只是忽略了什么。
1 个回答
2
在你调用 open
函数的时候,使用 'a'
选项,而不是 'w'
。因为 'w'
是覆盖写入,会把原来的内容删掉,而 'a'
是追加写入,会把新内容加到原来的内容后面。
这个链接解释了不同的打开模式,比如 a、a+、w、w+ 和 r+ 的区别。
这些信息很有用,可以帮助你理解不同的模式。