1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > QMT中print内容同时输出到控制台和日志文件

QMT中print内容同时输出到控制台和日志文件

时间:2021-10-04 07:17:07

相关推荐

QMT中print内容同时输出到控制台和日志文件

在QMT中使用print可以打印出执行的日志,但是有时候执行程序时间长,打印的内容比较多,控制台中就要覆盖前面的内容,不能够完整的保留下来做分析,下面示例可以在print到控制台的同时记录到日志文件中。

#encoding:gbkimport pandas as pdimport numpy as npimport talibimport sysimport time#Logger类的定义class Logger(object):def __init__(self,filename="Default.log"):self.terminal=sys.stdoutself.log=open(filename,"w",encoding="utf-8") #防止编码错误def write(self, message):self.terminal.write(message)self.log.write(message)def flush(self):pass#log初始化函数,在函数中初始化log对象def loginit():t=time.strftime("-%Y%m%d-%H%M%S",time.localtime()) #时间戳filename='d:\stock\log\log'+t+'.txt'log=Logger(filename)sys.stdout=logdef init(ContextInfo):ContextInfo.stock_code_list=['000001.SZ']ContextInfo.accID='18510385'ContextInfo.set_universe(ContextInfo.stock_code_list)ContextInfo.set_account(ContextInfo.accID)loginit() #初始化log对象def handlebar(ContextInfo):timetag=ContextInfo.get_bar_timetag(ContextInfo.barpos)dt=timetag_to_datetime(timetag,'%Y-%m-%d %H:%M%S')print(dt,'-'*30)if ContextInfo.is_last_bar() or dt[:10]==ContextInfo.end[:10]:sys.stdout.log.close() #关闭文件sys.stdout=sys.stdout.terminal #恢复输出的控制台引用print('回测完成') #最后一句没有写到日志文件中

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。