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

11

我正在编写一个脚本,自动将一个文件中的特定文本更改为另一个文件中的特定文本,并使用不同的名称。

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

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

我只需要文件名,因为 <_io.TextIOWrapper ...> 不能进行下标操作。

有什么建议可以去掉冗余的部分吗?

1个回答

18

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获取刚刚打开的文件路径,你可以简单地访问返回的_io.TextIOWrapper对象的名为name的属性。
file = fd.askopenfile()
if file: 
    print(file.name)

如果您想了解在filedialog(Python 2中的tkFileDialog)模块下定义的所有函数,您可以阅读此文章


你好,文章链接已失效,请问有新的链接吗?谢谢。 - pippo1980
@pippo1980 试着在Webarchive上搜索它的缓存版本。 - nbro
https://web.archive.org/web/20170515140020/http://tkinter.unpythonic.net/wiki/tkFileDialog - pippo1980

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接