Python 保存后未将扩展名添加到文件名
保存文件后,我得到的文件没有扩展名,尽管我在程序中通过Python 保存后未将扩展名添加到文件名,python,python-3.x,tkinter,savefiledialog,filedialog,Python,Python 3.x,Tkinter,Savefiledialog,Filedialog,保存文件后,我得到的文件没有扩展名,尽管我在程序中通过filetypes选项为它们提供扩展名。我只能使用defaultextension选项来完成,但我想让用户决定选择一个扩展,而不会弄乱代码。另外,当我使用defaultextension选项时,例如:defaultextension=“.txt”,它会在我的文件名中添加2.txt,如filename.txt。以下是我的片段: from tkinter import * import tkinter.filedialog root = Tk(
filetypes
选项为它们提供扩展名。我只能使用defaultextension
选项来完成,但我想让用户决定选择一个扩展,而不会弄乱代码。另外,当我使用defaultextension
选项时,例如:defaultextension=“.txt”
,它会在我的文件名中添加2.txt
,如filename.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()
我写文件没有任何问题,我的问题只是它们的扩展名
额外信息:
- 我在Windows7上
- 我已取消选中
(我已尝试检查版本,但没有更改任何内容)隐藏已知文件类型的扩展名
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
idlelib.IOBinding(.3.6中的iomenu)有以下代码,在未显式输入时可用于添加.py或.txt。我不知道/不记得“文本”是用来做什么的,但既然代码可以工作,我就不去管它了
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=“*.*”
选项就找到了答案。感谢大家尝试回答我的问题,尽管他们中没有人解决了我的问题,但事实上,大多数人只是对我的问题投了反对票,没有解释他们的理由。嗯,如果你不知道解决办法,那不是我的错,哈哈!谢谢那些试图帮助我的人!谢谢!:) 太好了!我自己通过添加defaultextension=“*.*”
选项就找到了答案。感谢大家尝试回答我的问题,尽管他们中没有人解决了我的问题,但事实上,大多数人只是对我的问题投了反对票,没有解释他们的理由。嗯,如果你不知道解决办法,那不是我的错,哈哈!谢谢那些试图帮助我的人!谢谢!:) 您是否检查了来自cmd.exe
(dir
)而非Windows资源管理器的文件名?将调用更改为tkinter.filedialog.asksaveasfilename(
@cdarke我检查了cmd.exe
(dir)
同样,它还显示没有extension@cdarke我将调用更改为tkinter.filedialog.asksaveasfilename
,但这并没有解决我的问题。实际上这是正常的,因为我已经导入了tkinter.filedialog
。如果使用不正确,它将完全无法工作。您的/pass逻辑是一个糟糕的Idea,您不知道代码是否有错误您是否需要从cmd.exe
(dir
)而不是Windows资源管理器中检查文件名?将调用更改为tkinter.filedialog.asksaveasfilename(
@cdarke I checkedcmd.exe
(dir)
同样,它还显示没有extension@cdarke我将调用更改为tkinter.filedialog.asksaveasfilename
,但这并没有解决我的问题。实际上这是正常的,因为我已经导入了tkinter.filedialog
。如果使用不正确,它将完全无法工作。您的/pass逻辑是一个糟糕的Idea,你不知道代码是否出错,它甚至会发出警告信息:文件名无效。
当你没有从列表中选择正确的文件扩展名时。效果很好,就像我想要的一样!;)投票被否决的原因之一是,当问题没有显示出研究的迹象,或者没有试图自己解决问题的迹象时。你最初的问题就有这个问题。@BryanOakley如果我在这里发帖,这意味着我在问问题之前已经找到了解决方案(我不是哑巴)。回答者应该提供参考资料。这次,我确实在许多流行资料中寻找了解决方案,如effbot、tcl/tk doc等,尽管如此,但我没有找到解决我的答案的方法。这是你想听到的吗?哈哈,好吧,下次,我会将这些资料添加到我的问题中。@BryanOakley不,我的意图不是回答我自己的问题。我真的不知道怎么解决它。我问了,但没有人回答我的问题。与此同时,我也一直在努力自己解决这个问题,最后,我终于找到了解决办法!所以我决定发布我的答案。我不知道这会违反规则。如果不限制我提问的权限,我真的不会在乎在这里贬低我的声誉。它甚至会发出警告信息:文件名无效。
如果你没有从列表中选择合适的文件扩展名。效果很好,就像我想要的一样!;)投票被否决的原因之一是当问题没有显示出研究的迹象,或者没有试图自己解决问题的迹象时。你原来的问题就是这个问题。@BryanOakley如果我在这里发帖,这意味着我在这里提问之前已经找到了解决方案(我不是哑巴)。回答者应提供参考资料。这一次,我真的在很多流行的源代码中寻找解决方案,比如effbot、tcl/tk doc等,尽管如此,但我没有找到解决方案。这是你想听的吗?哈哈,好吧,下次,我会把这些来源添加到我的问题中@不,我的目的不是回答我自己的问题。我真的不知道怎么解决它。我问了,但没有人回答我的问题。与此同时,我也一直在努力自己解决这个问题,最后,我终于找到了解决办法!所以我决定发布我的答案。我不知道这会违反规则。如果不限制我的提问权限,我真的不会在乎在这里贬低我的声誉。