从Python代码

时间:2017-01-24 19:09:09

标签: python

我必须使用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..)
  ...

1 个答案:

答案 0 :(得分:0)

实际上,我开始明白你要做什么了。我以为你试图导入你动态构建的模块,你正试图看看如何导入。

事情是导入会对内存中的模块执行某些操作。如果您执行以下操作:

import myMod
myMod.__dict__

您将看到import如何将导入模块的所有功能加载到myMod词典中。这可能是您在代码中执行此操作的方式。您可能希望查看创建自己的模块词典,也就是使用元编程(http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Metaprogramming.html)。