2016-09-30 80 views
0

总之,什么是在文档我不能从构建明白蟒蛇的Tkinter tkFileDialog

tkFileDialog.asksaveasfile 

tkFileDialog.asksaveasfilename 

的区别

+0

学习编程需要一些实验。你可以编写一个执行每个函数的小程序,并且看看自己会发生什么...... –

回答

4

asksaveasfile要求用户输入一个文件,然后以写入模式打开该文件并将其返回给您,以便您可以在其中写入。

asksaveasfilename向用户询问文件,然后返回该文件的名称。没有文件被打开;如果你想写入文件,你必须自己打开它。

asksaveasfilename可能比asksaveasfile更受欢迎,如果您想对文件做一些更有趣的事情,那么只需将数据写入文件。例如,您可能需要先将该文件复制到另一个目录作为备份。在这种情况下,您更愿意只获取文件名,以便您可以执行副本,而不必担心是否打开文件会导致副本失败。

+0

其实我知道这两个函数都会询问用户文件名,因为我的要点是创建一个** new **文件。 (那么为什么你说'为用户提供一个文件,就像现有文件一样?“)。如果我想写一个新文件到用户磁盘,asksaveasfile应该是首选? – user3599803

+0

@ user3599803:Tkinter的'asksaveas ...'函数允许用户选择现有的文件,但如果他们这样做,会弹出警告,询问他们是否要覆盖该文件。试试看! –

+0

@Kevin一旦文件以“w”模式打开,它已经被截断了,所以如果你使用'asaveave文件',你就没有机会备份它。 –

2

按照http://tkinter.unpythonic.net/维基:

类似:

首先,你必须决定是否要打开文件,或者只是想为了打开的文件,以获取文件名的拥有。在第一种情况下,您应该在后一种情况下使用tkFileDialog.askopenfile()tkFileDialog.askopenfilename()

则:

保存文件的工作以类似的方式。您还有两个函数变体,一个用于获取打开的文件,您可以使用该文件保存数据,另一个文件名用于打开文件。这些功能仅在单个文件版本中提供。多文件版本将没有意义。

+0

我想写一个新文件到用户磁盘,对话框应该让他保存在一个文件夹中 – user3599803