python - 如何在文件浏览器中使用动态模块?

标签 python python-3.x dynamic tkinter module

基本上,当我的程序运行时,我希望它能提供一个文件浏览器,我可以在其中选择一个将作为模块导入的 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/

相关文章:

python - 为什么再次读取文件读取速度更快?

python - 类型错误 : object of type 'map' has no len()

python argparse : default flag

python-3.x - 返回方阵中的对角线列表(简化)

c - C 中动态分配的字符串数组

python - 在 GAE 中以智能方式引用 Blob

python - 为什么 'True == not False' 是语法错误?

python - 我尝试在游戏中设置白天循环,但是一旦变成夜晚,就不会再回到白天

c++ - 指针问题

c - 动态内存分配实践