如何从另一个.py获取变量

时间:2013-08-17 07:36:58

标签: python return pygtk

我有两个.py程序。我调用第二个.py程序,第二个程序解决了一个问题。所以我希望得到第一个解决方案并使用。例如:

1.py:

致电2.py

y = x + 2

2.py:

x = 2 + 2

2 个答案:

答案 0 :(得分:1)

您需要将.py文件导入另一个文件 在OS中运行它不会在新文件中获取变量

使用

from module import function

然后,您可以从此新文件中调用该函数并打印它返回的值

答案 1 :(得分:0)

使用subprocess模块并创建管道。然后你可以挑选变量并通过管道发送它(参见subprocess的文档)。

以下是一个例子:

通讯模块communicate.py

import sys
import subprocess as sp
import cPickle

BEGIN = 'pickle_begin'

def send_and_exit(x):
    sys.stdout.write(BEGIN + cPickle.dumps(x))
    sys.stdout.flush()
    sys.exit(0)

def execute_and_receive(filename):
    p = sp.Popen(["python", filename], stdout=sp.PIPE)
    (out, err) = p.communicate()
    return cPickle.loads(out[out.find(BEGIN) + len(BEGIN):])

1.py

from communicate import *
x = execute_and_receive("2.py")
y = x + 2

2.py

from communicate import *
x = 2 + 2
send_and_exit(x)

要确保您在stdout信息流的正确位置开始取消建议,我建议设置标记,就像我使用BEGIN字符串一样。可能还有更优雅的解决方案,如果有的话,我也很感兴趣。