2015-02-06 72 views
3

我正在编写一个脚本来自动将一个文件中的特定文本集更改为另一个文件中的特定集,并使用不同的名称。从Tkinter的askopenfilename函数获取文件路径

我想使用askopenfilename功能的文件名,但是当我尝试打印的文件名,则返回:

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

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

任何建议,以消除多余的位?

from tkinter import filedialog as fd 

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

要打开askopenfilename选择的文件,你可以简单地使用Python的结构和功能,如open

回答

6

askopenfilename()没有被选择的文件返回选定的文件或空字符串的路径功能:

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

我认为你正在使用askopenfile,打开选择文件并返回一个_io.TextIOWrapper对象或None若按T键他取消按钮。

如果你想与askopenfile坚持让刚刚打开的文件的文件路径,你可以简单地访问_io.TextIOWrapper对象称为name的属性返回:

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

如果您想了解更多关于所有在filedialog(或Python2的tkFileDialog)模块中定义的函数,可以读取this article