Writelines(python)清除它应该写入的文本文件,并且什么都不写

时间:2013-02-20 00:41:35

标签: python file list

我正在做的是非常基本的,但由于某种原因,实际上并没有在我需要的文本文件中写任何内容。

我做的第一件事就是从用户那里获得输入并将其分配给assoc。这很好,因为我可以随时打印出assoc,这似乎完全正常。

接下来,我根据assoc是否等于0,1或2来打开另一个文件。我读取所有行并将读取行列表分配给变量beta ,然后我获取测试版的长度并将其分配给prodlen,添加一个prodlen并将该新值分配给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;

获取用户输入后,打开文件,列出其内容并读取其长度,然后再次使用用户输入打开具有写入权限的文件。 (我只包含了一个可能的if语句,因为除了写入哪个文件以及VALUE(字符串是什么)之外,其他语句是相同的)。我使用\n附加列表测试版以获得换行符,后跟一个字符串,此处由VALUE表示。然后我以字符串形式将localid添加到结尾。

if assoc==0:
    fob=open('pathto/textfile1.txt','w')
    beta.append("\nVALUE"+str(localid))
    print (beta)
    fob.writelines(beta)

我的真正问题在于最后两行。当我打印出列表测试版时,它包含我附加的新值。但是当我尝试将列表写入文件时,它会清除当前文件中的所有数据并且不会在其中写入任何内容!我是一个python noob,所以请保持解决方案简单(如果可能)。我认为解决方案相对简单。我可能只是忽略了一些东西。

1 个答案:

答案 0 :(得分:2)

'a'来电中使用'w'选项代替open。 w覆盖,附加。

http://docs.python.org/2/library/functions.html#open

python open built-in function: difference between modes a, a+, w, w+, and r+?

是对不同模式的有用解释。