我正在做的事情非常基本,但由于某种原因,实际上并没有将任何内容写入我需要的文本文件中。
我做的第一件事是从用户那里获取输入并将其分配给assoc
。这工作得很好,因为我可以随时打印出 assoc
,而且看起来工作完全正常。
接下来,我根据 assoc
是否等于 0、1 或 2 打开不同的文件。我读取所有行并将读取行的列表分配给变量 beta
,然后我获取 beta 的长度并将其分配给 prodlen
,添加一二 prodlen
并将新值分配给 localid
code> 并关闭该对象。我添加此内容的唯一原因是因为我担心我错过了一些重要且简单的内容。
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
附加列表 beta 以获取换行符,后跟一个字符串,此处用 VALUE
表示。然后,我以字符串形式将 localid
添加到末尾。
if assoc==0:
fob=open('pathto/textfile1.txt','w')
beta.append("\nVALUE"+str(localid))
print (beta)
fob.writelines(beta)
不过,我真正的问题是在最后两行。当我打印列表 beta 时,它包含我附加的新值。但是,当我尝试将列表写入文件时,它会清除文件中当前的所有数据,并且不会在其中写入任何内容!我是一个 python 菜鸟,所以请保持解决方案简单(如果可能的)。我认为这个问题的解决方案相对简单。我可能只是忽略了一些事情。
最佳答案
在 open
调用中使用 'a'
选项而不是 'w'
。 w 覆盖,a 追加。
http://docs.python.org/2/library/functions.html#open
python open built-in function: difference between modes a, a+, w, w+, and r+?
是对不同模式的有用解释。
关于python - Writelines (python) 清除它应该写入的文本文件,并且不写入任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970351/