【发布时间】:2019-06-15 18:33:30
【问题描述】:
我正在尝试使脚本自动化:
- 读取在另一个脚本中定义的输入(例如 Input_01.py 或 Input_02.py,仅包含变量定义,例如:J = 6 或 J = 7);和
-
在函数中使用该变量,即:
def foo_function(): A = J A += 3 print(A)
现在,如果我不需要自动化任何东西,事情就很简单了:
我只需输入from Input_01 import J 即可。然后我可以对 Input_02 执行相同的操作并重复该操作。
但我的想法是制作一个脚本(Multi_Run.py),它允许我自动调用多次关键脚本(称为“code_foo.py”)的过程,每个输入文件一个,每次读取不同的输入文件(例如 Input_01、Input_02、...等)
这是我当前的“Multi_Run.py”脚本(针对只有两个不同输入文件的情况进行了简化):
Inputs = []
for i in range(2):
Inputs.append("Input_0%s" % (i+1))
for Counter in Inputs:
import code_foo
code_foo.foo_function()
但现在我不能在“code_foo.py”中说:from Counter import J,因为这不起作用有两个原因:
- 首先,Counter 不是 code_foo 中的变量(这似乎可以通过添加类似
from __main__ import *的行来解决) - 其次,导入函数无法读取 Counter 变量中的字符串,但它直接需要模块的名称(例如 Input_01),从而阻止了授权。我试图通过使用 importlib.import_module 来解决这个问题,但它似乎无法正常工作(即“Input_##”模块以某种方式“导入”,而不是“运行”,这意味着“J=#somenumber”行导入脚本时未运行,因此出现错误,因为未定义 J 变量)。
为了更清楚,我当前的 code_foo.py 脚本如下:
import importlib
from __main__ import *
importlib.import_module(Counter)
def foo_function():
A = J
A += 3
print(A)
有什么提示吗?非常感谢
【问题讨论】:
-
“似乎无法正常工作”是对问题的完全无用的描述。请发布您的代码(或至少一个 MCVE)和它如何“不起作用”的完整描述(如果您遇到异常,请发布确切的错误消息和完整的回溯,否则描述预期结果和结果取而代之)。
-
感谢您的回复,我已经发布了几乎整个代码,所以让我回顾一下:我有 Multi_Run.py 脚本(正如发布的那样),两个 Input_##.py 脚本只包含“ J = #a number"(如前所述),以及 code_foo.py 脚本,目前是这样的:` import importlib from main import * importlib.import_module(Counter) def foo_function(): A = JA += 3 print(A)` 问题是使用 importlib 的导入没有像正常导入那样“运行”导入的脚本,因此变量 J 是“未知的”
-
请编辑您的问题 - cmets 中的代码几乎不可读。
-
感谢您的提示,我编辑了问题。如果您有任何解决方案,我将不胜感激
标签: python function variables scripting iteration