用python编写key=value1,….valuen格式的文件

用python编写key=value1,….valuen格式的文件,python,Python,我有一个现有文件/tmp/ps/snaps.txt 它有以下数据: key=default_value 我希望此文件的内容为: key=default_value,value,value.....valuen 我的代码是(每次主python代码运行时都会运行): 但我得到的结果是: key=default_value, value,value.....value 基本上我不希望我的价值观写在下一行, 有什么解决方法吗?原始文件末尾的行终止符阻止您追加到同一行 您有3种选择: 删除该行终止符

我有一个现有文件/tmp/ps/snaps.txt 它有以下数据:

key=default_value
我希望此文件的内容为:

key=default_value,value,value.....valuen
我的代码是(每次主python代码运行时都会运行):

但我得到的结果是:

key=default_value,
value,value.....value
基本上我不希望我的价值观写在下一行,
有什么解决方法吗?

原始文件末尾的行终止符阻止您追加到同一行

您有3种选择:

  • 删除该行终止符:代码将按原样工作

  • 在追加模式下打开文件,查找过去的换行符,然后从那里写入(将换行符放入下一次或最后一个字符将被覆盖:

  • 代码:

  • 完全读取文件,剥离最后一个换行符(使用
    str.rstrip()
    )并写入内容+额外内容。如果您能够为现有内容提供内存+读取开销,这是最稳定的选项
  • 代码:


    选项2是一种黑客行为,因为它试图以读/写方式编辑文本文件,虽然不是很好,但证明了它是可以做到的。

    您需要的是将文件内容加载到合适的数据结构中,插入新值并再次将该数据写入文件,您不应该尝试在适当的位置更改文件内容。
    key=default_value,
    value,value.....value
    
    with open(filename, "a+") as text_file:
        text_file.seek(os.path.getsize(filename)-len(os.linesep))
        text_file.write("{},\n".format(snapshot_name))
    
    with open(filename,"r") as text_file:
        contents = text_file.read().rstrip()
    with open(filename,"w") as text_file:
        text_file.write(contents)
        text_file.write("{},".format(snapshot_name))