从python脚本动态导入变量

2024-07-01 06:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在递归函数中包含来自文件的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])

此代码有两个问题:

  • include语句执行导入的脚本(我不想更改脚本)。你知道吗
  • 它在子文件夹中找不到文件。你知道吗

我不想手动解析文件,如果可能的话,我希望避免包含额外的依赖项。你知道吗

我知道上面写的很难听。问题是:(如何)我可以完成我想要的,与数量的黑客将更干净的整体,然后编写/包括(外部)解析器。你知道吗


Tags: 文件import脚本nonebinvarusrdef
2条回答

在一个朋友的帮助下我得到了:

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)

干净得出奇。你知道吗

必须在子文件夹中创建名为__init__.py的文件。这可以是空的。你知道吗

相关问题 更多 >

    热门问题