Python - 导入模块,它具有不同的文件名?

时间:2018-03-25 14:23:31

标签: python python-3.x class import module

基本上,我有两个.py个文件位于同一目录中。即,foo_v02bar_v01

bar_v01中,我想从foo_v02导入一个类。但是,为了方便起见,我想使用语句from foo import myClass(忽略版本号)。但是,由于我的文件未被调用foo,当然python会抛出错误,因为没有名为foo.py的文件。

我的问题:我是否可以使用from foo import myClass而无需重命名我的foo_v02.py文件?

注意:我已经有了可以使用from foo_v02 import myClass的代码,所以我没有遇到这样的问题。另外,我问这个问题,因为我的foo_xx.py文件会经常进行编辑,所以会有多个版本(因此我不想在每个新版本中编辑import语句)。此外,目录中只有一个foo_xx.py,因为所有以前的版本在过期后都会移动到其他目录。

编辑:

我现在已经发布了一个答案,但如果有人有更好的方法,请随时发布!

2 个答案:

答案 0 :(得分:1)

由于原来的答案被删除了......

import glob
a = glob.glob('*.py') ## Returns all of the `python` files
b =  a[0]
exec('from {} import myClass'.format(b[:-3]))

我使用exec()(而非__import__),因为我实际上想要运行import语句。此外,import之后也不会被丢弃。

答案 1 :(得分:1)

我认为以下代码可能有效:

import glob

foo = __import__(glob.glob('foo_*.py')[0][:-3])
myClass = foo.myClass