我必须使用Python代码(函数,类,导入)动态创建Python文件。这是我目前的代码
def write_code_to_file(code_list, file_path):
with open(file_path, 'w') as ofh:
for c in code_list:
fh = io.StringIO(inspect.getsource(c))
ofh.writelines(fh.readlines())
ofh.write('\n\n')
write_code_to_file([myFunc, myClass],'/some/path')
1)有更好的方法吗?
2)我如何进行导入语句?我可以直接传递一个字符串,即“从lib import util”,但有更好的方法吗?我无法为变量分配import语句,但我怎么能做类似的事情。
import_stmt1 = ...something which represents "from lib import util" ....
write_code_to_file([import_stmt1, myFunc], '/tmp/myfile.py')
所以,当我打开/tmp/myfile.py
时,它应该是:
from lib import util
def myFunc(arg1, arg2..)
...
答案 0 :(得分:0)
实际上,我开始明白你要做什么了。我以为你试图导入你动态构建的模块,你正试图看看如何导入。
事情是导入会对内存中的模块执行某些操作。如果您执行以下操作:
import myMod
myMod.__dict__
您将看到import如何将导入模块的所有功能加载到myMod词典中。这可能是您在代码中执行此操作的方式。您可能希望查看创建自己的模块词典,也就是使用元编程(http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Metaprogramming.html)。