| 
 
	积分8890贡献 精华在线时间 小时注册时间2014-4-19最后登录1970-1-1 
 | 
 
| 
在用pyinstaller打包python成exe文件运行后,经常出现一些错误信息,如果只是输出在窗口的话,会出现窗口一闪而过,无法记录下必要信息。同时除了错误信息,还有一些必要输出信息,比如处理到第几个文件之类的,也是想要看到的,因此最好需要输出到一个日志文件里记录下来。为这个问题折腾了几天,上网查了不少资料,终于解决了,在此记录一下。先放一段最后解决的代码:
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  import logging
 import traceback
 import datetime
 #日志同时输出到屏幕和文件
 logger = logging.getLogger()
 logger.setLevel(level=logging.INFO)
 
 logfile = 'test.log'
 
 #设置输入到文件里的属性
 handler = logging.FileHandler(logfile, mode='a')
 handler.setLevel(logging.INFO)
 formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
 handler.setFormatter(formatter)
 logger.addHandler(handler)
 
 #设置输入到屏幕上的属性
 console = logging.StreamHandler()
 console.setLevel(logging.WARNING)
 logger.addHandler(console)
 
 try:
 #确定起报时间
 now_time = datetime.datetime.now()
 yy=str(now_time)[0:4]
 mm=str(now_time)[5:7]
 dd=str(now_time)[8:10]
 
 #起报时间可选当天00/12UTC、前一天12UTC
 initial1=str(yy)+str(mm)+str(dd)+'12'
 initial2=str(yy)+str(mm)+str(dd)+'00'
 time=now_time-datetime.timedelta(hours=24)
 yy=str(time)[0:4]
 mm=str(time)[5:7]
 dd=str(time)[8:10]
 initial3=str(yy)+str(mm)+str(dd)+'12'
 
 #判断文件夹下是否存在数据
 file_dir1 =glob.glob(ec_eps_dir+initial1+'\\pf*.nc')
 file_dir2 =glob.glob(ec_eps_dir+initial2+'\\pf*.nc')
 file_dir3 =glob.glob(ec_eps_dir+initial3+'\\pf*.nc')
 
 #先判断当天12UTC起报文件是否存在,再判断当天00UTC起报
 #最后判断前一天12UTC起报,都不存在说明数据有缺失
 if (file_dir1!=[]):
 initial=initial1
 elif (file_dir2!=[]):
 initial=initial2
 elif (file_dir3!=[]):
 initial=initial3
 else:
 logging.warning('!!----path is not correct or data not exist----!!')
 except:
 s = traceback.format_exc()
 logging.error(s)
 
 
 中间代码还有很长就不放了,核心思路就是把原先用print输出想要的信息,现在要用Logging.info或者 logging.warning来输出,就能输入到日志文件里了。至于logging模块的基础信息网上有很多介绍了,在这里就不在赘述了。
 
 | 
 |