gpt4 book ai didi

java - 将 python stdout 读取为字符串

转载 作者:行者123 更新时间:2023-11-30 09:27:20 26 4
gpt4 key购买 nike

在 Java 中,我可以使用以下命令将标准输出读取为字符串

ByteArrayOutputStream stdout = new ByteArrayOutputStream();
System.setOut(new PrintStream(stdout));
String toUse = stdout.toString();

/**
* do all my fancy stuff with string `toUse` here
*/

//Now that I am done, set it back to the console
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));

有人可以告诉我在 python 中执行此操作的等效方法吗?我知道这个问题的不同风格已被问过很多次,例如 Python: Closing a for loop by reading stdoutHow to get stdout into a string (Python) .但我有一种感觉,我不需要导入子流程来获得我需要的东西,因为我需要的比这更简单。我在eclipse上用的是pydev,编程很简单。

我已经试过了

from sys import stdout

def findHello():
print "hello world"
myString = stdout

y = 9 if "ell" in myString else 13

但这似乎不起作用。我对打开文件有一些提示。

最佳答案

如果我已经理解您要正确执行的操作,那么像这样的操作将使用 StringIO对象捕获您写入 stdout 的任何内容,这将允许您获取值:

from StringIO import StringIO
import sys

stringio = StringIO()
previous_stdout = sys.stdout
sys.stdout = stringio

# do stuff

sys.stdout = previous_stdout

myString = stringio.getvalue()

当然,这会抑制实际输出到原始 stdout 的输出。如果你想将输出打印到控制台,但仍然捕获值,你可以使用这样的东西:

class TeeOut(object):
def __init__(self, *writers):
self.writers = writers

def write(self, s):
for writer in self.writers:
writer.write(s)

然后像这样使用它:

from StringIO import StringIO
import sys

stringio = StringIO()
previous_stdout = sys.stdout
sys.stdout = TeeOut(stringio, previous_stdout)

# do stuff

sys.stdout = previous_stdout

myString = stringio.getvalue()

关于java - 将 python stdout 读取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com