我有两个 .py 程序。我调用第二个 .py 程序,第二个程序解决了一个问题。所以我想获得第一个解决方案并使用 . 例如:
1.py:
调用 2.py
y= x+2
2.py:
x = 2+2
您需要将 .py 文件导入另一个文件 在操作系统中运行它不会在新文件中获取变量
采用
from module import function
然后,您可以从这个新文件中调用该函数并打印它返回的值
使用该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
字符串所做的那样。可能还有更优雅的解决方案,如果是这样,我也很感兴趣。