使用tkinter.filedialog.asksaveasfilename获取要在i中追加的文件名

2024-09-27 07:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在用tkinter设计的GUI应用程序中,我希望以追加模式将一些数据保存在文件中。要获取文件名,我使用asksaveasfilenamefrom filedialog模块。代码如下:

from tkinter.filedialog import asksaveasfilename

def save_file():

    file_name = asksaveasfilename()

    if file_name:
        f = open(file_name, 'a')
        contents = tab_chrono.text_area.get(1.0, 'end')
        f.write(contents)
        f.close()

当我在对话框中选择一个现有文件时,出现了一个警告,该文件将被覆盖。这不是真的,因为我附加在文件中。 有没有办法消除这个警告?还是我必须自己重写一个askappendfilename?这在filedialog模块中丢失。 enter image description here


Tags: 模块文件数据name应用程序警告tkinter文件名
2条回答

选择现有文件时,请使用选项confirmoverwrite来阻止该消息。

import tkFileDialog 
import time
class Example():

    dlg = tkFileDialog.asksaveasfilename(confirmoverwrite=False)
    fname = dlg
    if fname != '':
        try:
            f = open(fname, "rw+")
            text = f.read()
            print text
        except:
            f = open(fname, "w")
        new_text = time.time()
        f.write(str(new_text)+'\n')
        f.close()      

编辑:请注意,我正在使用f.read()来打印现有文本。
您可能需要删除f.read()和随后的print语句,并用f.seek(0,2)替换它们,该语句将指针定位在现有文件的末尾。
另一个选项如下所示,使用文件打开中的append选项,如果文件不存在,该选项将创建该文件:

import tkFileDialog 
import time
class Example():

    dlg = tkFileDialog.asksaveasfilename(confirmoverwrite=False)
    fname = dlg
    if fname != '':
        f = open(fname, "a")
        new_text = time.time()
        f.write(str(new_text)+'\n')
        f.close()      

asksaveasfilename对话框接受一个confirmoverwrite参数来启用或禁用文件存在性检查。

file_name = asksaveasfilename(confirmoverwrite=False)

这可以在tk_getSaveFile的Tk手册中找到,但似乎没有为tkinter记录。它是在Tk 8.5.11中引入的,因此在Tk术语中是相对较新的(2011年11月发布)。

相关问题 更多 >

    热门问题