2015-02-06 73 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