我有两个.py程序。我调用第二个.py程序,第二个程序解决了一个问题。所以我希望得到第一个解决方案并使用。例如:
1.py:
致电2.py
y = x + 2
2.py:
x = 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
字符串一样。可能还有更优雅的解决方案,如果有的话,我也很感兴趣。