如何在递归函数中包含文件中的var?
到目前为止我所拥有的:
#!/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])
此代码存在两个问题:
我不想手动解析文件,如果可能的话,我想避免包含额外的依赖项。
我知道上面是hacky。问题是:(如何)我可以通过大量清理工作来完成我想要的工作,然后编写/包含(外部)解析器。
答案 0 :(得分:0)
您必须在子文件夹中创建名为__init__.py
的文件。这可能是空的。
答案 1 :(得分: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)
令人惊讶的清洁。