获取带有 tkinter.filedialog.asksaveasfilename 的文件名以在其中附加
Get a file name with tkinter.filedialog.asksaveasfilename to append in it
在使用 tkinter
设计的 GUI 应用程序中,我希望以追加模式将一些数据保存在文件中。要获取文件名,我使用 filedialog
模块中的 asksaveasfilename
。这是代码:
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()
当我在对话框中 select 一个现有文件时,问题发生了,我收到了一个警告,该文件将被覆盖。这是不正确的,因为我附加在文件中。
有没有办法摆脱这个警告?或者我必须自己重写 askappendfilename
吗? filedialog
模块中缺少此内容。
在选择现有文件时,使用选项 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 月发布)。
在使用 tkinter
设计的 GUI 应用程序中,我希望以追加模式将一些数据保存在文件中。要获取文件名,我使用 filedialog
模块中的 asksaveasfilename
。这是代码:
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()
当我在对话框中 select 一个现有文件时,问题发生了,我收到了一个警告,该文件将被覆盖。这是不正确的,因为我附加在文件中。
有没有办法摆脱这个警告?或者我必须自己重写 askappendfilename
吗? filedialog
模块中缺少此内容。
在选择现有文件时,使用选项 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 月发布)。