如何将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)]
答案 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
。但是,如果你无法弄清楚如何写,那你几乎肯定不想。