Python tkinter 保存和更改 txt 文件

Posted

技术标签:

【中文标题】Python tkinter 保存和更改 txt 文件【英文标题】:Python tkinter save and change txt file 【发布时间】:2021-04-18 19:17:40 【问题描述】:

我的程序只是要求创建一个新的 txt 文件,或者如果它存在,程序会保存它。

def file_open():
    global filename
    filename = filedialog.askopenfile(mode='r+', filetypes =[('Txt', '*.txt')])
    if filename is not None:
        t = filename.readlines()
        textentry.delete(0, 'end')
        for item in t:
            textentry.insert(END, item)

我在我的 ListBox 中打开一个现有的 txt 文件。

在对文本进行一些调整后,我正在保存它,但我只能在 txt 中添加新项目。当我删除一个时,我的输出 txt 没有更新。

def file_save():
    global filename
    if filename == '':
        filename = filedialog.asksaveasfile(mode='w', defaultextension=".txt")
    if filename is not None:
        f = open(filename, "w")
        for i in textentry.get(0,'end'):
            f.write(i+"\n")

注意:textentry 是一个 ListBox 小部件 我试过这段代码来保存,但没有奏效。当我单击保存按钮时,它应该只是将列表框条目转换为 txt。

我希望你能帮助我。谢谢

【问题讨论】:

写入后尝试关闭文件(f.close())。 textentrytkinter.Text 小部件吗?您还知道您的 filename 变量包含文件句柄而不是文件名 【参考方案1】:

假设 textentry 是一个 tkinter.Listbox 小部件,您可以使用它:

def file_open():
    global filename
    filename = filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ))
    if filename != "":
        with open(filename, "r") as file:
            data = file.read()
        textentry.delete(0, "end")
        for line in data.split("\n"):
            textentry.insert("end", line)

def file_save():
    global filename
    if filename == "":
        filename = filedialog.asksaveasfilename(defaultextension=".txt")
    if filename != "":
        with open(filenname, "w") as file:
            file.write("\n".join(textentry.get(0, "end")))

您的代码的问题是您的 filename 变量包含文件的句柄而不是文件名作为 str

【讨论】:

谢谢,但我的 textentry 是一个列表框小部件 @AliCanÇoban 我想我修好了。 第 61 行,在 file_save 中使用 open(filename, "w") as file: TypeError: expected str, bytes or os.PathLike object, not TextIOWrapper 它显示了这个错误@TheLizzard 您是否完全复制了我的代码?我想你要么错过了askopenfilenameasksaveasfilename。请注意这些函数名称末尾的name 我错过了那部分,但是当我复制完整代码时,单击打开文件按钮时无法打开文件。它给了我 _tkinter.TclError: bad option "-mode": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, -title, or -typevariable

以上是关于Python tkinter 保存和更改 txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 3.x tkinter 中保存文本框(字符串和整数)

使用 Tkinter 和 Python 制作文本编辑器

创建 Python 按钮保存编辑的文件

根据 Tkinter 中保存的文件编写另一个文本文件

Python文件路径和名称检索

如何使用 tkinter 按钮在 python 中写入文件?