基本上,当我的程序运行时,我希望它能提供一个文件浏览器,我可以在其中选择一个将作为模块导入的 python 程序。这是我到目前为止所拥有的:
from tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw()
x = askopenfilename()
print(x)
#g = __import__(x)
问题是这会获取文件的整个路径,而不仅仅是文件名。即使它确实只获取文件名,我也必须从末尾删除 .py。
所以基本上我的问题是,有没有更简单的方法来实现我想要的?如果没有,那么如何去掉所有路径信息和文件扩展名,只留下模块名称?
为了添加一些上下文,这个程序最终要做的是使用一个仪表来测量电压,但我希望它可以互换我使用的仪表。由于每个仪表的通信方式不同,我想在自己的文件中编写每个仪表的所有命令,并选择每次运行时要使用的仪表。不,我不仅仅是想输入模块的名称,我还希望能够浏览它。
最佳答案
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)
关于python - 如何在文件浏览器中使用动态模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217465/