Python:将变量发送到另一个脚本

4 投票
5 回答
34545 浏览
提问于 2025-04-16 00:07

我刚开始学Python,工作上有点被扔进深水区了。

假设我有一个脚本,它创建了一个像下面这样的列表:

test = 'string'

l = []

for i in test:
    l.append(i)

print l

我该怎么把这个列表发送到另一个Python脚本呢?

5 个回答

1

这要看你是想把计算的结果发送给另一个独立运行的Python进程,还是想把这个结果共享给你项目中的其他部分。

如果是前者,你需要用一些方法来让不同的进程之间进行通信。比如,你可以把结果写入一个文件,然后在另一个进程中读取这个文件;或者在两个进程之间建立一个连接(叫做socket);还有一种方法是使用信号量(semaphore)。

如果是后者,你可以利用Python的模块概念,把计算的结果共享给你项目中的另一个脚本。

2

不太清楚你的第一个脚本是否在运行第二个脚本,或者它们是否是被外部的东西一个接一个地调用。不管怎样,有一种简单的方法可以把列表传递给第二个进程,那就是通过标准输入(stdin),数据本身是一个列表的pickle

举个例子:

script1.py:

import sys
import pickle
list = [item for item in test]
pickle.dump(list, sys.stdout)

script2.py:

import sys
import pickle
list = pickle.load(sys.stdin)
for item in list:
    print item

运行方式:script1.py | script2.py

4

我猜你是想在一个叫做 first.py 的脚本里定义的变量 some_list,在另一个叫做 second.py 的脚本中使用。

所以你可以这样做:

$ cat first.py second.py 
#first.py
def demo():
    some_list = []
    for i in 'string':
         some_list.append( i )
    return some_list

#second.py 
from first import demo

some_list = demo()
print some_list 

$python second.py
['s', 't', 'r', 'i', 'n', 'g']

在文件中写的代码被称为模块。要使用这些代码,你需要这样写:

from 模块名 import 要用的东西

在这个例子中,函数 demo 是在模块 first 中定义的。

在第二个文件中,你可以把它导入进来并使用。

你可以在模块中运行任意代码并声明变量,但把它们放在函数(或类)里会更好,如上面所示。

希望这正是你需要的。

撰写回答