我正在尝试从导入的另一个模块的函数存储打印输出, 作为字符串并将其写入文件。但是,该函数不返回字符串,只打印输出。 所以我需要这样的东西:
import someModule
......
f.open('test.v','w')
out = storetheprintoutputasstring(someModule.main())
f.write(out)
f.close
我该怎么做? 请帮帮我,并提前感谢您
答案 0 :(得分:8)
我认为你要做的事情有点像黑客,所以我假设你有这样做。
以下是使用stdout
语句将with
重定向到文件的方法:
import sys
from contextlib import contextmanager
@contextmanager
def redirected(stdout):
saved_stdout = sys.stdout
sys.stdout = open(stdout, 'w')
yield
sys.stdout = saved_stdout
with redirected(stdout='file.txt'):
print 'Hello'
print 'Hello again'
答案 1 :(得分:2)
mod1.py:
def main():
print "BOHOO"
mod2.py:
import sys
from StringIO import StringIO
import mod1
def storetheprintoutputasstring(func):
saved_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
func() # Call function
sys.stdout = saved_stdout
return mystdout.getvalue()
f = open('test.v','w')
out = storetheprintoutputasstring(mod1.main)
f.write(out)
f.close()
运行 python mod2.py 。
test.v包含:
BOHOO