我試圖將導入的另一個模塊的功能 的打印輸出存儲爲字符串並將其寫入文件。但是,該函數不返回一個字符串,它只打印輸出。 所以我需要的東西,如:Python:存儲來自不同模塊功能的打印輸出
import someModule
......
f.open('test.v','w')
out = storetheprintoutputasstring(someModule.main())
f.write(out)
f.close
我該怎麼辦呢? 請幫助我,並提前感謝您
我試圖將導入的另一個模塊的功能 的打印輸出存儲爲字符串並將其寫入文件。但是,該函數不返回一個字符串,它只打印輸出。 所以我需要的東西,如:Python:存儲來自不同模塊功能的打印輸出
import someModule
......
f.open('test.v','w')
out = storetheprintoutputasstring(someModule.main())
f.write(out)
f.close
我該怎麼辦呢? 請幫助我,並提前感謝您
我認爲你要做的是有點破解,所以我認爲你有這樣做。
這裏是你可以如何使用with
聲明重定向stdout
到一個文件:
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'
我會添加'try:yield;最後:...'。 – reclosedev 2012-02-04 10:19:01
這就是thanx! – CosmicRabbitMediaInc 2012-02-04 10:29:06
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
聽起來類似於http://stackoverflow.com/questions/1218933/can-i-redirect-the-stdout-in-python-into-some-sort-字符串緩衝區 – MatthewD 2012-02-04 08:40:53
如果您正在使用基於Unix的操作系統,只需使用輸出重定向即可。 '$ python someModule.py> output_file.txt' 如果沒有,那麼你會想從標準輸入讀入並寫入你的文件。 我正在假設您不需要動態完成此操作。 – batbrat 2012-02-04 08:41:51
我需要這個在python文件中完成,而不是在shell中。 – CosmicRabbitMediaInc 2012-02-04 09:02:49