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

1 投票
2 回答
684 浏览
提问于 2025-04-18 05:27

我知道这个问题其实已经被问过很多次了。但我有一个更具体的问题,还是关于导入外部文件的。

我有几个外部文件,每个文件里都有一个数据库——不同的语法,用来解析文本——这些是我主脚本运行所需要的。我想通过命令行参数把这些外部数据库脚本传进去。每次调用主脚本时只传一个。所以我在主脚本的开头写了以下代码:

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”的包。

撰写回答