Python - 通过命令行导入外部文件

时间:2014-05-05 18:06:52

标签: python

我知道这原则上已经问了很多问题。但是我在导入外部文件的一般事项中有一个更具体的问题。

所以,我有一些外部文件,每个文件都包含一个数据库 - 用于解析文本的不同语法 - 这是我的主脚本运行所必需的。我想通过命令行参数传递外部数据库脚本。每次调用主脚本一个。所以我在主脚本的顶部写了以下序列:

extGrammar = sys.argv[-1]
import extGrammar

所以我的理由是给变量extGrammar命名行参数的名称,该名称对应于相关数据库文件的名称,然后导入该文件。就像我写的那样

import grammar1

如果我有一个外部文件grammar1.py

但我收到错误“ImportError:No module named extGrammar”

我不明白。我的推理中的缺陷在哪里以及这样做的正确方法是什么?

由于

2 个答案:

答案 0 :(得分:0)

您需要调用内置的函数__import__,而不是import语句,因为Python语言将后者解析为直接导入(因此变量名称)作为模块处理,结果明显)。要导入通过变量通过名称引用的模块,您需要函数,而不是语句。

答案 1 :(得分:0)

尝试:

import importlib
extGrammar = importlib.import_module(extGrammar)

或:

exec ("import " + extGrammar)

问题是python没有意识到这是一个包含引用包的字符串的变量。相反,它会在路径中查找名为“extGrammar”的包。