tkinter - 在askopenfile期间检索文件名

时间:2015-09-07 20:13:19

标签: python regex tkinter filenames

我有一个用Python和tkinter编写的文本编辑器。

这是我打开的文件'方法:

def onOpen(self):
        file = askopenfile(filetypes=[("Text files", "*.txt")])
        txt = file.read()
        self.text.delete("1.0", END)
        root.title(file)
        self.text.insert(1.0, txt)
        file.close()

我想将窗口标题设置为等于文件名。目前我使用任何askopenfile返回作为文件名,但这会返回例如:

< _io.TextIOWrapper name =' /Users/user/Desktop/file.txt'模式=' R'编码=' UTF-8'>

这当然不是很好。我想任何askopenfilename都会返回。但如果我调用askopenfile和askopenfilename,则用户必须使用'打开文件'对话两次。

有没有办法在没有第二个对话框的情况下检索文件名?

如果没有,RegEx是否有人过滤掉文件名。如果你对RegEx很好,最好的文件名当然只是' file.txt' not' /Users/user/Desktop/file.txt'。无论哪种方式都很好。

2 个答案:

答案 0 :(得分:0)

您正在传递文件对象,因此您将文件对象的引用视为标题,您可以使用name = root.title(file.name)从文件对象中获取名称。

如果您只想使用基本名称os.path.basename

import os
name = os.path.basename(file.name)

答案 1 :(得分:0)

# apply SMOTE to tackle class imbalance
from imblearn.over_sampling import SMOTE
sm = SMOTE(kind = "regular", k=1)
X_tr,y_tr = sm.fit_sample(X_train,y_train)
print(X_tr.shape)
print(y_tr.shape)