Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存后未将扩展名添加到文件名_Python_Python 3.x_Tkinter_Savefiledialog_Filedialog - Fatal编程技术网

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上
  • 我已取消选中
    隐藏已知文件类型的扩展名
    (我已尝试检查版本,但没有更改任何内容)
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
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 checked
cmd.exe
(dir)
同样,它还显示没有extension@cdarke我将调用更改为
tkinter.filedialog.asksaveasfilename
,但这并没有解决我的问题。实际上这是正常的,因为我已经导入了
tkinter.filedialog
。如果使用不正确,它将完全无法工作。您的/pass逻辑是一个糟糕的Idea,你不知道代码是否出错,它甚至会发出警告信息:
文件名无效。
当你没有从列表中选择正确的文件扩展名时。效果很好,就像我想要的一样!;)投票被否决的原因之一是,当问题没有显示出研究的迹象,或者没有试图自己解决问题的迹象时。你最初的问题就有这个问题。@BryanOakley如果我在这里发帖,这意味着我在问问题之前已经找到了解决方案(我不是哑巴)。回答者应该提供参考资料。这次,我确实在许多流行资料中寻找了解决方案,如effbot、tcl/tk doc等,尽管如此,但我没有找到解决我的答案的方法。这是你想听到的吗?哈哈,好吧,下次,我会将这些资料添加到我的问题中。@BryanOakley不,我的意图不是回答我自己的问题。我真的不知道怎么解决它。我问了,但没有人回答我的问题。与此同时,我也一直在努力自己解决这个问题,最后,我终于找到了解决办法!所以我决定发布我的答案。我不知道这会违反规则。如果不限制我提问的权限,我真的不会在乎在这里贬低我的声誉。它甚至会发出警告信息:
文件名无效。
如果你没有从列表中选择合适的文件扩展名。效果很好,就像我想要的一样!;)投票被否决的原因之一是当问题没有显示出研究的迹象,或者没有试图自己解决问题的迹象时。你原来的问题就是这个问题。@BryanOakley如果我在这里发帖,这意味着我在这里提问之前已经找到了解决方案(我不是哑巴)。回答者应提供参考资料。这一次,我真的在很多流行的源代码中寻找解决方案,比如effbot、tcl/tk doc等,尽管如此,但我没有找到解决方案。这是你想听的吗?哈哈,好吧,下次,我会把这些来源添加到我的问题中@不,我的目的不是回答我自己的问题。我真的不知道怎么解决它。我问了,但没有人回答我的问题。与此同时,我也一直在努力自己解决这个问题,最后,我终于找到了解决办法!所以我决定发布我的答案。我不知道这会违反规则。如果不限制我的提问权限,我真的不会在乎在这里贬低我的声誉。