python - Writelines (python) 清除它应该写入的文本文件,并且不写入任何内容

标签 python file list

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

我做的第一件事是从用户那里获取输入并将其分配给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/

相关文章:

python - 如何将 Tornado 日志存储到文件中?

python - 没有 Django 模型的 Graphite 烯 Django?

python - odoo v9 enterprice saas 与 xml-rpc 连接

java - 获取要从另一个包读取的文件

c - 如何将文件捆绑/包含并使用到 C - linux 中的可执行文件中?

c# - 如何读取多个文本文件并将其保存到一个文本文件中?

python - 仅将列表中的某些单词分配给变量

python - 在 Numpy 中应用不使用 for 循环的非平凡矩阵计算

list - 如何修复模式匹配详尽警告?

java - 如何找到 List<E> 中的最小值?