如果您正在谈论的是脚本的“父级”
python解释器或CMD.exe,那么不可能,这是不可能的。在每个类似POSIX的系统中(似乎现在您正在运行Windows,并且可能有一些我不知道的怪癖,YMMV),每个进程都有三个流,标准输入,标准输出和标准错误。Bu默认(在控制台中运行时)将定向到控制台,但是可以使用管道符号进行重定向:
python script_a.py | python script_b.py
这将脚本a的标准输出流与脚本B的标准输入流联系在一起。在此示例中,标准错误仍然传递给控制台。请参阅Wikipedia上有关标准流的文章。
如果您正在谈论子进程,则可以像这样从python启动它(如果需要双向通信,stdin也可以选择):
import subprocess# Of course you can open things other than python here :)process = subprocess.Popen(["python", "main.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)x = process.stderr.readline()y = process.stdout.readline()process.wait()
有关管理流程的信息,请参见Python子流程模块。为了进行通信,将process.stdin和process.stdout管道视为标准文件对象。
对于管道,从lassevk的标准输入中读取建议您执行以下 *** 作:
import sysx = sys.stderr.readline()y = sys.stdin.readline()
sys.stdin和sys.stdout是上述在sys模块中定义的标准文件对象。您可能还想看看管模块。
在我的示例中,使用readline()读取数据是一种非常幼稚的获取数据的方式。如果输出不是面向行的或不确定的,则可能要调查轮询,不幸的是,该轮询无法在Windows中运行,但是我敢肯定还有其他选择。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)