在导入的模块中更改exec语句中的变量

时间:2013-08-30 14:21:57

标签: python bash python-2.7 python-import multi-module

我正在尝试使用bash脚本同时运行多个python脚本,并通过传入args来修改bash脚本(称为MasterLoader)中的python变量(如amount或min / max):

A_Num=20

python A1.py "global AMOUNT; AMOUNT = $A_Num" &&
python A2.py &&
#More follows

$SHELL

在A1中我有一个功能:

def take_args():
    for i in range(len(sys.argv)-1):
        exec(sys.argv[i+1])

现在,这很好用。我的问题来自于我为每个文件实现了托管所有功能的模块(每个模块有大约250行或更多的冗余代码),如下所示:

def take_args():
    for i in range(len(sys.argv)-1):
        exec(sys.argv[i+1])

def common_function1():
    #Code here
#More functions follow

我调用了这个模块函数,现在在A1(其中任何一个真的)我只是这样做:

from functions import *

def main()
    #<Variables here>

    take_args()

然而,这不再有效,因为A1中的变量未被更改。我的想法是现在它在函数中运行take_args()并且正在改变那个全局AMOUNT?由于公共函数重构我有一个函数而没有全局变量,所以我想在不使用我目前可以实现的任何解决方案的情况下这样做:

  1. 复制def take_args():跨越每个函数并创建所有可能的变量我想调整全局

  2. 必须修改我传递的MasterLoader的args和A1.py以将相关变量传递给函数

  3. 如果可能的话,我希望解决方案只需更改MasterLoader的args,就像我之前一样。解决方案2对我不起作用,因为我有大约60个脚本,如果我想改变新变量,我必须重构,解决方案1从编程角度来看很笨重(重复代码,全局变量)

0 个答案:

没有答案