Python 简单使用;作为“进口”;要加载多场景数据?
我以python模块的形式接收场景数据(场景中具有不同值的相同变量集) 例如:Python 简单使用;作为“进口”;要加载多场景数据?,python,python-3.x,variable-assignment,python-import,Python,Python 3.x,Variable Assignment,Python Import,我以python模块的形式接收场景数据(场景中具有不同值的相同变量集) 例如: import sys def main(): script = sys.argv[0] no_scens = int(sys.argv[1]) for i in range(0, no_scens): process_1(i) def process_1(scen_count): if scen_count == 0: import scen0
import sys
def main():
script = sys.argv[0]
no_scens = int(sys.argv[1])
for i in range(0, no_scens):
process_1(i)
def process_1(scen_count):
if scen_count == 0:
import scen00
elif scen_count == 1:
import scen01 as scen00
print(scen00.scenario_name[0], scen00.scenario_num[0])
scen00.py
:
scenario_name = ["foo"]
scenario_num = [0]
.
.
scenario_name = ["bar"]
scenario_num = [1]
.
.
scen01.py
:
scenario_name = ["foo"]
scenario_num = [0]
.
.
scenario_name = ["bar"]
scenario_num = [1]
.
.
我使用import as
将每个场景导入到python函数的单独关联中,然后引用基本名称空间进行所有编程
例如:
import sys
def main():
script = sys.argv[0]
no_scens = int(sys.argv[1])
for i in range(0, no_scens):
process_1(i)
def process_1(scen_count):
if scen_count == 0:
import scen00
elif scen_count == 1:
import scen01 as scen00
print(scen00.scenario_name[0], scen00.scenario_num[0])
预期成果:
foo 0
酒吧1
当
no\u scens
为2
时,此代码起作用,但process\u 1()
中为scen00
分配不同场景的段不可伸缩且不美观。假设我现在有150个场景要导入,我如何才能最好地修改process_1()
?您可以尝试变量导入:
def process_1(scen_count):
scen = __import__("scen%02d" % scen_count)
print(scen.scenario_name[0], scen.scenario_name[1])
标记为重复的问题似乎没有引用名称空间。在我的问题中,我怎样才能更清楚地说明这一点?名称空间是什么?如果能够使用名称引用新导入的模块(这不是Python文档所称的名称空间),那么您只需执行以下操作:
def process(scen\u count):name=“scen{}”。format(scen\u count)mod=importlib.import\u module(name)print(mod.scenario\u name[0],mod.scenario\u num[0])
(部分出现在副本的一个答案中)您指出的内容与导入代码一样重要(正如副本答案所示,版本比使用导入更合适)。作为第一次发布的海报,如果没有您和msaba92的洞察力,我很难从副本中获得完整答案。