基本上,我有两个.py
个文件位于同一目录中。即,foo_v02
和bar_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
,因为所有以前的版本在过期后都会移动到其他目录。
编辑:
我现在已经发布了一个答案,但如果有人有更好的方法,请随时发布!
答案 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