在我的代码中,我希望对目录中存在的所有文件执行导入文件名。我在工作区下有一个名为abc.py
的文件。
目前我正在执行以下操作:
for filename in os.listdir(homedir/workspace)
exec "import " + filename
filename = eval(filename + '.function(variable)')
问题在于它使用了 import
abc.py
而不是 import abc
,然后显示错误信息 no module named py
。我该如何解决这个问题呢?
提前感谢!
exec
。您可以通过module = __import__(filename)
实现完全相同的效果。使用exec
会打开一个安全问题(例如,某人可以将文件命名为os;os.sytem("killall cats")
,当您的代码执行时,所有猫都会死亡!使用__import__
您只会收到一个ImportError
。比__import__
更好的是importlib.import_module
,虽然它仅适用于 Python2.7 和 3.1+。 - Bakuriu