1

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

1.py:

调用 2.py

y= x+2

2.py:

x = 2+2

4

2 回答 2

1

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

采用

from module import function

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

于 2013-08-17T07:57:08.897 回答
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字符串所做的那样。可能还有更优雅的解决方案,如果是这样,我也很感兴趣。

于 2013-08-17T08:12:36.750 回答