让我说我打印以下代码
print("""
THE RUSSIAN PEASANT ALGORITHM
-----------------------------
times two values x and y together
""")
x=int(raw_input("raw_input x: "))
y=int(raw_input("raw_input y: "))
print("x"+" "*(10)+"y")
while x!=1:
x=x/2
y=y*2
print(str(x)+" "*10+str(y))
这会打印算法的结果,与用户输入的数字相对应。如果我希望得到一个包含所有输出到python控制台的变量,我该如何处理呢?
编辑:为了澄清我想要输出的原因,如果是这样基本上我可以用“CLS”清除屏幕并重新打印我已经打印的所有内容,但是你应该用俄语划掉偶数x值农民算法。
答案 0 :(得分:1)
所有关于将 @Override
public void run() {
if (isVisible()) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
// stuff to do
}
});
}
}
重新定义为一些内存流。
您可以使用stdout
打印。请参阅python2 docs - Reading and writing strings as file,python3 docs - Core tools for working with streams。
使用该字符串做什么,甚至用常规string
打印。
print
import sys
import StringIO
old_stdout = sys.stdout # Memorize the default stdout stream
sys.stdout = buffer = StringIO.StringIO()
print('123')
a = 'HeLLo WorLd!'
print(a)
# Call your algorithm function.
# etc...
sys.stdout = old_stdout # Put the old stream back in place
whatWasPrinted = buffer.getvalue() # Return a str containing the entire contents of the buffer.
print(whatWasPrinted) # Why not to print it?
buffer.close()
import sys
import io
old_stdout = sys.stdout # Memorize the default stdout stream
sys.stdout = buffer = io.StringIO()
print('123')
a = 'HeLLo WorLd!'
print(a)
# Call your algorithm function.
# etc...
sys.stdout = old_stdout # Put the old stream back in place
whatWasPrinted = buffer.getvalue() # Return a str containing the entire contents of the buffer.
print(whatWasPrinted) # Why not to print it?
print(123)
然后可以更改,打印到常规标准输出等。
答案 1 :(得分:0)
你似乎想要的是输出,如果我们使用tempfile对Tee实现here做一个小调整,你可以写入TemporaryFile,然后从中得到输出:
import sys
from tempfile import TemporaryFile
class Tee(object):
def __init__(self):
self.file = TemporaryFile()
self.stdout = sys.stdout
sys.stdout = self
def __del__(self):
sys.stdout = self.stdout
self.file.close()
def write(self, data):
self.file.write(data)
self.file.write(data.rstrip()+"\n")
self.stdout.flush()
t = Tee()
print("""
THE RUSSIAN PEASANT ALGORITHM
-----------------------------
times two values x and y together
""")
x = int(raw_input("raw_input x: "))
y = int(raw_input("raw_input y: "))
print("x" + " " * (10) + "y")
while x != 1:
x = x / 2
y = y * 2
print(str(x) + " " * 10 + str(y))
t.file.seek(0)
print(t.file.read())
答案 2 :(得分:0)
您可以通过写入文本文件来完成此操作:
sys.stdout = open("test.txt", "w")
## Your Code ##
sys.stdout.close()
如果您的程序需要它,则可以从文本文件中读取。
printed_text=open("test.txt", "r").readlines()
答案 3 :(得分:-1)
我不确定你为什么要这样做,所以这可能对你没有帮助,但是可以通过从另一个脚本执行你的脚本来在控制台中打印所有值。
在新文件中:
import subprocess
linetorun = ["python", "yourscript.py"]
proc= subprocess.Popen(linetorun,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
printedtoconsole,errormessage=proc.communicate()
with open("output.txt","w+") as outfile:
f.write(x)
应该做的伎俩。 communication()与Popen中设置的选项将为您提供控制台输出。 这可能需要对unix进行一些调整。