2017-01-24 6 views
0

Pythonコード(関数、クラス、インポート)を使用して、その場で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_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

__import()__は、2番目の質問に役立ちます。https://docs.python.org/2/library/functions.html#__import__ –

+0

'import()'はモジュール全体のソースコードをインポートし、それじゃない?つまり、私の 'util.py'のソース全体です。 'lib import util'の行をインポートするだけです。 – RAbraham

答えて

0

実は、私はあなたが何をしようとして理解し始めています。私はあなたがオンザフライで構築したモジュールをインポートしようとしていると思っていましたが、インポートする方法を見ています。

メモリ内のモジュールに何かがインポートされているということがあります。

import myMod 
myMod.__dict__ 

インポートされたモジュールのすべての機能がmyMod辞書にロードされる方法がわかります。これはおそらくコードでどのように行うのでしょうか。メタプログラミング(http://python-3-patterns-idioms-test.readthedocs.io/en/latest/Metaprogramming.html)を使用して、独自のモジュール辞書を作成することができます。

関連する問題