Python - 通过命令行导入外部文件
我知道这个问题其实已经被问过很多次了。但我有一个更具体的问题,还是关于导入外部文件的。
我有几个外部文件,每个文件里都有一个数据库——不同的语法,用来解析文本——这些是我主脚本运行所需要的。我想通过命令行参数把这些外部数据库脚本传进去。每次调用主脚本时只传一个。所以我在主脚本的开头写了以下代码:
extGrammar = sys.argv[-1]
import extGrammar
我的想法是把变量extGrammar设置为命令行参数的名字,这个名字对应着我想要导入的数据库文件名,然后导入那个文件。就像我写了
import grammar1
如果我有一个外部文件grammar1.py
但我遇到了错误:“ImportError: No module named extGrammar”
我不明白这个错误是什么意思。我的思路哪里出了问题,正确的做法应该是什么呢?
谢谢
2 个回答
0
你需要使用内置的 函数,也就是 __import__
,而不是 import
语句。因为在 Python 语言中,后者会被解析为直接导入(这样变量名就会被当作模块来处理,结果就会很明显)。如果你想通过变量名来导入一个模块,就得用这个函数,而不是用语句。
0
试试:
import importlib
extGrammar = importlib.import_module(extGrammar)
或者:
exec ("import " + extGrammar)
问题在于,Python没有意识到这其实是一个变量,里面存的是一个指向某个包的字符串。相反,它在路径中寻找一个叫“extGrammar”的包。