从Tkinter中的askopenfilename函数获取文件路径

时间:2015-02-06 19:27:34

标签: python python-3.x tkinter

我正在编写一个脚本来自动将一个文件中的特定文本集更改为另一个文件中具有不同名称的特定集。

我想使用askopenfilename函数获取文件的名称,但是当我尝试打印文件名时,它会返回:

<_io.TextIOWrapper name='/home/rest/of/file/path/that/I/actually/need.txt' mode='w' encoding='ANSI_X3.4-1968'>

我只需要文件名,因为<_io.TextIOWrapper ...>不是子脚本。

有关移除无关位的建议吗?

1 个答案:

答案 0 :(得分:6)

如果没有选择文件,

askopenfilename()将返回所选文件的路径或空字符串:

from tkinter import filedialog as fd

filename = fd.askopenfilename()
print(len(filename))

要打开使用askopenfilename选择的文件,您只需使用普通的Python构造和函数,例如open函数:

if filename:
    with open(filename) as file:
        return file.read()

我认为您正在使用askopenfile,如果您按取消按钮,则会打开所选文件并返回_io.TextIOWrapper个对象或None

如果您想坚持使用askopenfile来获取刚刚打开的文件的文件路径,您只需访问返回的name对象名为_io.TextIOWrapper的属性:

file = fd.askopenfile()
if file: 
    print(file.name)

如果您想了解filedialog(或Python {1 {}})模块下定义的所有函数的更多信息,可以阅读this article