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

Get file path from askopenfilename function in Tkinter

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

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

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

我只需要文件名,因为 <_io.TextIOWrapper ...> 不可编写脚本。

有什么删除无关位的建议吗?

askopenfilename() returns 所选文件的路径或空字符串,如果没有选择文件:

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,它会打开选​​定的文件和 returns 一个 _io.TextIOWrapper 对象,或者 None 如果您按下 取消 按钮。

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

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

如果您想了解更多关于filedialog(或tkFileDialog for Python 2)模块下定义的所有函数,您可以阅读this article