如何在Python中的全局变量中存储sys.stdout.write的结果

时间:2018-03-14 02:09:22

标签: python stdout

如何将sys.stdout.write(输出)的结果用作全局变量。 以下是代码的一部分。 sys.stdout.write的输出是单词,它会一直追加到140个字符完成。

for i in range(140):
    x = numpy.reshape(pattern, (1, len(pattern), 1))
    x = x / float(num_vocab)
    pred = model.predict(x, verbose=0)
    index = numpy.argmax(pred)
    output = int_to_char[index]
    #print('Output',output)
    OutputTweet.append(output)
    seq_in = [int_to_char[value] for value in pattern]
    sys.stdout.write(output)
    sys.stdout.flush()
    pattern.append(index)
    pattern = pattern[1:len(pattern)]

1 个答案:

答案 0 :(得分:1)

sys.stdout.write结果不是很有用 - 它只是你写的任何字符的数量。当然,您可以将其存储在全局变量中:

written = 0

def myfunc():
    global written
    written += sys.stdout.write(blahblah)

...但我不明白为什么你想要

sys.stdout.write写入终端(或重定向文件,或其他什么)似乎更有用。但是你已经拥有了。你这样做了:

sys.stdout.write(output)

所以,它写的内容正是output中的内容。所以只需存储它。例如:

outputs = []
def myfunc():
    global outputs
    output = blah blah blah
    sys.stdout.write(output)
    outputs.append(output)

现在,如果您无法控制正在编写内容的函数,因为它在某些库中您不允许修改或其他内容,您可以捕获其输出。这通常不是一个好主意,但是如果你需要,你可以在真实的sys.stdout周围写一个包装器来保存输出,然后将它传递给真实的东西(或者,如果你不是我希望它能够点击屏幕),然后只需指定sys.stdout = mywrapper。但是,如果你无法弄清楚如何写,那你几乎肯定不想。