提问人:user3696153 提问时间:11/11/2023 更新时间:11/11/2023 访问量:25
导入我 python 喜欢的任意文件
Importing an arbitrary file that I python like
问:
我正在尝试创建一个工具,并想用python实现它。 我只关心将其与现代 python 3 系统一起使用。 我想用标准的python库来做到这一点,没有额外的模块。
一般的想法是该工具被告知“加载文件(X)” 它实际上是一个类似 python 的文件,我想在文件中使用 python 结构。
这个想法对我来说并不简单,要用简短的方式解释。 但这里是:
我有几个类叫做:APPLICATION、LIBRARY、TOOL、GENDATA。
- APPLICATION 定义一个可执行文件。
- LIBRARY 定义了一个静态库
- TOOL 定义了另一种类型的可执行文件
- GENDATA是由某个工具生成的数据 GENDATA 的一个示例是由工具创建的标头或源代码文件。
该工具将循环访问一组目录并导入该目录。 要导入目录,它会读取一个文件:“tool_name.py”。 (有点像 CMAKE 使用 CMakefile.txt 导入子目录的方式)
我希望能够在这个导入的文件中充分利用 python 的所有内容。 所以它有点像:
# In the "Main File" we define some classes or functions
def THIS_FUNCTION( .. parameters .. ):
... does something ...
def THAT_FUNCTION( .. parameters .. ):
... does something else ...
class FOO(...):
... stuff
class BAR(...):
... other stuff
# prepare a list of names to pass to the import/evaluation process.
predefined_things = [ FOO, BAR, THIS_FUNCTION, THAT_FUNCTION ]
# for each thing we need to import.
for name in ALL_SUBDIRS:
# go import/execute that python file in that directory.
# and pass a list of predefined classes it might use.
all_things.extend( import_this_subdir( name, predefined_functions ) )
这个想法有点像 Scons 构建系统,但事实并非如此。
今天 - 每个子目录都有一个由工具读取和处理的文件。 但是这些文件变得越来越复杂,我希望能够 在这些文件中执行 python 代码,这将简化这些模块文件
我知道我可以: eval() 源文件。这很简单。
我不知道该怎么做是将“预定义”函数或类的列表传递给赋值器,即:“除了标准的 python 之外,这里还有一些额外的函数,这些函数已经定义,可以由正在导入的文件使用。
答: 暂无答案
评论
import tool_name