我的python脚本必须在代码中包含其他python脚本。我希望其他脚本作为命令行参数传递。例如:我的脚本是test.py,我想根据命令行输入在我的代码中包含first.py.命令行输入
python test.py first.py
在代码中我想要first.py导入,如:
先导入
但我无法想办法。我尝试使用optparse和fileInput,但它们并没有成为我的意图。
我不认为从参数导入模块是最佳做法,但如果你真的想这样做,可以尝试下面的代码:
import sys
for file_name in sys.argv[1:]:
module_name = file_name.replace('.py', '')
exec('import %s' % module_name)
为什么原始代码中的简单import语句不能完成这项工作?像这样:
import first
#
# The rest of the program.
#
然后从命令行,您只需要运行
python test.py
只要test.py和first.py位于同一目录中,这种方法就可以在test.py中有效地“包含”first.py.请包含有关您希望将first.py作为命令行参数传递的原因的详细信息。在我看来,因为你已经知道你的程序将使用first.py做什么,并且你必须在假设first.py将被导入的情况下编写你的代码,你可能只是在开头做的test.py.
python test.py first.py - 在这种情况下,test.py是argv [0],first.py是argv [1]
在test.py中添加以下代码
from sys import argv
execfile(argv[1])
我不知道回答你问题的最佳方法。但这是我的解决方案。同样,这可能不是最好的解决方案 -
module_name = input()
with open('file_name.py', 'w') as py_file:
py_file.write('import ' + module_name)