保存后未将扩展名添加到文件名
Extension not added to file name after saving
虽然我在程序中通过 filetypes
选项 为它们提供了扩展名,但我在保存文件后得到了没有扩展名的文件。我只能使用 defaultextension
选项 来做到这一点,但我想让用户决定选择一个扩展而不会弄乱代码。另外,当我使用 defaultextension
选项 时,例如:defaultextension=".txt"
,它会在我的文件名中添加 2 .txt
,例如 filename.txt.txt
.这是我的片段:
from tkinter import *
import tkinter.filedialog
root = Tk()
root.title("Saving a File")
root.geometry("500x500-500+50")
def save():
filename = filedialog.asksaveasfilename(
initialdir="D:",
title="Choose your file",
filetypes=(
("Text Files", "*.txt"),
("Python Files", "*.py"),
("All Files", "*.*")
)
)
try:
fileobj = open(filename, 'w')
fileobj.write(text.get(0.0, "end-1c"))
fileobj.close()
except:
pass
button = Button(root, text="Save", command=save,
cursor='hand2', width=30, height=5,
bg='black', fg='yellow', font='Helvetica')
button.pack()
text = Text(root)
text.pack()
我没有写入文件有任何问题,我的问题仅在于它们的扩展。
额外信息:
- 我在 Windows 7
- 我没有勾选
Hide extensions for known file types
(我试过勾选的版本,但没有任何改变)
idlelib.IOBinding(3.6 中的 .iomenu)具有此代码,可在未明确输入时添加 .py 或 .txt。我不知道 know/remember "TEXT" 是干什么用的,但既然代码有效,我就不用管它了。
filetypes = [
("Python files", "*.py *.pyw", "TEXT"),
("Text files", "*.txt", "TEXT"),
("All files", "*"),
]
[...]
def asksavefile(self):
dir, base = self.defaultfilename("save")
if not self.savedialog:
self.savedialog = tkFileDialog.SaveAs(
parent=self.text,
filetypes=self.filetypes,
defaultextension=self.defaultextension)
filename = self.savedialog.show(initialdir=dir, initialfile=base)
return filename
太棒了!我自己只是通过添加 defaultextension="*.*"
选项 找到了答案。感谢大家尝试回答我的问题,尽管他们 none 解决了我的问题, 事实上 ,他们中的大多数只是否决了我的问题 而没有 解释他们的理由。好吧,如果您不知道解决方案,那不是我的错 LOL!感谢其他试图帮助我的人! 感谢!:)
虽然我在程序中通过 filetypes
选项 为它们提供了扩展名,但我在保存文件后得到了没有扩展名的文件。我只能使用 defaultextension
选项 来做到这一点,但我想让用户决定选择一个扩展而不会弄乱代码。另外,当我使用 defaultextension
选项 时,例如:defaultextension=".txt"
,它会在我的文件名中添加 2 .txt
,例如 filename.txt.txt
.这是我的片段:
from tkinter import *
import tkinter.filedialog
root = Tk()
root.title("Saving a File")
root.geometry("500x500-500+50")
def save():
filename = filedialog.asksaveasfilename(
initialdir="D:",
title="Choose your file",
filetypes=(
("Text Files", "*.txt"),
("Python Files", "*.py"),
("All Files", "*.*")
)
)
try:
fileobj = open(filename, 'w')
fileobj.write(text.get(0.0, "end-1c"))
fileobj.close()
except:
pass
button = Button(root, text="Save", command=save,
cursor='hand2', width=30, height=5,
bg='black', fg='yellow', font='Helvetica')
button.pack()
text = Text(root)
text.pack()
我没有写入文件有任何问题,我的问题仅在于它们的扩展。
额外信息:
- 我在 Windows 7
- 我没有勾选
Hide extensions for known file types
(我试过勾选的版本,但没有任何改变)
idlelib.IOBinding(3.6 中的 .iomenu)具有此代码,可在未明确输入时添加 .py 或 .txt。我不知道 know/remember "TEXT" 是干什么用的,但既然代码有效,我就不用管它了。
filetypes = [
("Python files", "*.py *.pyw", "TEXT"),
("Text files", "*.txt", "TEXT"),
("All files", "*"),
]
[...]
def asksavefile(self):
dir, base = self.defaultfilename("save")
if not self.savedialog:
self.savedialog = tkFileDialog.SaveAs(
parent=self.text,
filetypes=self.filetypes,
defaultextension=self.defaultextension)
filename = self.savedialog.show(initialdir=dir, initialfile=base)
return filename
太棒了!我自己只是通过添加 defaultextension="*.*"
选项 找到了答案。感谢大家尝试回答我的问题,尽管他们 none 解决了我的问题, 事实上 ,他们中的大多数只是否决了我的问题 而没有 解释他们的理由。好吧,如果您不知道解决方案,那不是我的错 LOL!感谢其他试图帮助我的人! 感谢!:)