Python:将变量发送到另一个脚本
我刚开始学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
中定义的。
在第二个文件中,你可以把它导入进来并使用。
你可以在模块中运行任意代码并声明变量,但把它们放在函数(或类)里会更好,如上面所示。
希望这正是你需要的。