2017-08-15 18 views
-1

ファイルからのvarを再帰関数に含めるにはどうすればよいですか?私がこれまで持って何Pythonスクリプトから変数を動的にインポートする

#!/usr/bin/python3 
import sys 

def parseFile(pathToFile : str): 
    print(pathToFile) 
    fileVars = __import__(pathToFile, None, None, ['fileList'], 0)   
    for file in fileVars.fileList: 
      parseFile(file) 

parseFile(sys.argv[1]) 

このコードには二つの問題があります。

  • ザ・文は(私は、スクリプトを変更する必要はありません)、インポートスクリプトを実行含んで。
  • サブフォルダ内にファイルが見つかりません。

ファイルを手動で解析したくないので、可能であれば余分な依存関係を避けたいと思います。

私は上記がハッキーであることを知っています。問題は、(どのように)(私が)ハッキングの量が全体的にきれいになり、(外部の)パーサーを含めて書くことで達成できるのかです。

+0

賛成投票を説明する気に?私は私の宿題をやった。私はインターネット上でこれ以上有用な情報を見つけることができません。私はPythonの初心者です。 – lynx

答えて

0

import ast 

def getVarFromPy(pathToFile: str, varName: str): 
    my_ast = ast.parse(open(pathToFile).read()) # fd will be collected by GC sometime in the future 
    return next(eval(compile(ast.Expression(obj.value), '<ast>', mode='eval')) for obj in my_ast.body if 
       isinstance(obj, ast.Assign) and obj.targets[0].id == varName) 

驚くべきことにきれい。

0

サブフォルダに__init__.pyという名前のファイルを作成する必要があります。これは空にすることができます。私はそれを得た友人の助けを借りて

+0

ヒントをお寄せいただきありがとうございますが、私は解決策をメインスクリプトに含めることを願っています。 (私はあなたのコメントを残して投票したかった残念ながら私は十分な担当者を持っていない)。 – lynx

関連する問題