基本上当我的程序运行时,我希望它能够提供一个文件浏览器,我可以在其中选择一个python程序,它将作为模块导入。这就是我到目前为止所做的:
from tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw()
x = askopenfilename()
print(x)
#g = __import__(x)
问题是这会抓取文件的整个路径,而不仅仅是文件名。即使它只抓取文件名,我也必须从最后删除.py。
所以基本上我的问题是,是否有更简单的方法来实现我想要的?如果没有,那么如何剥离所有路径信息和文件扩展名,只留下模块名称?
要添加一些上下文,这个程序最终会做的是我们一个电表进行电压测量,但我希望它可以互换我使用的仪表。由于每个仪表的通信方式不同,我想在自己的文件中写下每个仪表的所有命令,并在每次运行时选择我想要使用的仪表。不,我不只是想输入模块的名称,我希望能够浏览它。
答案 0 :(得分:3)
os.path包含您需要的一切。
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from os.path import basename, splitext
Tk().withdraw()
path = askopenfilename()
file = basename(path)
(filename, fileextension) = splitext(file)
print(filename)