多次运行相同的python脚本混合变量

时间:2019-04-27 12:23:31

标签: python

我想将一些数据传递到另一个python脚本并在那里做一些事情。但是,如果我使用不同的参数同时运行脚本多次,则发送的数据会冲突。我如何分开它们?

示例代码:

main.py

import otherscript

list_a = [1,2,3] # from arguments
otherscript.append_to_another_list(list_a)

otherscript.py

another_list = []
def append_to_another_list(list):
    another_list.append(list)
    print(another_list)

如果我使用参数1,2,3和4,5,6同时运行main.py两次,它将在相同的列表中将它们都打印在[1,2,3,4,5,6] 。我希望我说清楚了

2 个答案:

答案 0 :(得分:3)

其中有两次从OS命令行调用两次-例如bash-您希望它们完全独立,显示OP描述的行为。

另一方面,在单个Python解释器中,一个模块仅初始化一次,因此otherscript模块(这是一个模块而不是脚本)中的列表会一直存在,并且一直存在附加到。

无论如何,也许最好的选择是最好的类。

class ListKeeper:
    def __init__(self):
        self.another_list = []

    def append_to_another_list(self, list):
        self.another_list.append(list)
        print(another_list)

您的main.py如下:

import otherscript

list_a = [1,2,3] # from arguments
keeper1 = otherscript.ListKeeper()
keeper1.append_to_another_list(list_a)

您可以根据需要创建任意数量的实例,所有实例彼此独立,并保持各自的状态。

答案 1 :(得分:1)

我只是按照以下步骤简化了您的main.py

import otherscript

import sys
list_a = [int(item) for item in sys.argv[1:]]
otherscript.append_to_another_list(list_a)

然后当我使用python3.7 main.py 1 2 3 && python3.7 main.py 4 5 6一起运行它们时,我得到了输出

[[1, 2, 3]]
[[4, 5, 6]]

此外,如果打开相同的终端并运行两次append_to_another_list命令,由于引用的是同一列表,输出将发生变化!

In [2]: import otherscript                                                      

In [3]: otherscript.append_to_another_list([1,2,3])                             
[[1, 2, 3]]

In [4]: otherscript.append_to_another_list([4,5,6])                             
[[1, 2, 3], [4, 5, 6]]