【问题标题】:Python files - Write to new line each time openedPython 文件 - 每次打开时写入新行
【发布时间】:2013-12-22 16:02:38
【问题描述】:

我要做的是每次通过 tkinter 按钮调用 AppViewer_SAVE 函数时,它可以打开文件并写入数据。我的问题是每次调用函数并写入时,它不会写入新行,它只是覆盖第一行上的数据,代码如下:

def Appviewer_SAVE(self):
    target = open("saved", "w+")
    target.write("%s\t" % App_InfoTrans0())
    target.write("%s\t" % App_InfoTrans1())
    target.write("%s\n" % App_InfoTransfer_Gender) #\n doesn't make a difference here
    target.close()

【问题讨论】:

    标签: python file tkinter


    【解决方案1】:

    将您的代码更改为:

    def Appviewer_SAVE(self):
        target = open("saved", "a")
        target.write("%s\t" % App_InfoTrans0())
        target.write("%s\t" % App_InfoTrans1())
        target.write("%s\n" % App_InfoTransfer_Gender) #\n doesn't make a difference here
        target.close()
    

    'w+'模式:

    打开一个文件进行读写。覆盖现有的 文件是否存在。如果文件不存在,则新建一个 用于读写的文件。

    'a'模式:

    打开一个文件进行追加。文件指针位于文件末尾 文件是否存在。也就是说,文件处于附加模式。如果 该文件不存在,它会创建一个新文件进行写入。

    您可以在link查看所有文件模式

    【讨论】:

    • 谢谢!我什至不知道文件有附加。我想我应该去了解更多关于文件的信息
    • 试图接受答案,让我先等几分钟。我会尽快接受的
    【解决方案2】:

    您想以追加模式打开文件

    open(filename, 'a') 
    

    虽然追加模式有时在行为上存在一些特定于平台的差异,所以另一种选择是在写入模式下打开并手动查找到末尾

    f = open(filename, 'w') 
    f.seek(0, os.SEEK_END) 
    

    以后,请查看 Python 文档中的 open。它在那里明确指出 “(请注意,'w+' 会截断文件)”。如果您使用的是 Python 3,请确保明确参考您正在使用的 Python 版本的文档,因为 open() 接受的一些模式和参数是不同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2021-01-29
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      相关资源
      最近更新 更多