ITPub博客

首页 > 应用开发 > Python > 转载一段简洁明了的python代码 实现了读取文件并按行反转后输出

转载一段简洁明了的python代码 实现了读取文件并按行反转后输出

原创 Python 作者:张国平 时间:2021-11-16 15:24:15 0 删除 编辑

事情是这样,我在用python自带的logging.FileHandler,输出logging记录,主要是记录主力合约切换的。很简单。


就是用米筐的get_dominant或者聚宽的get_dominant_future去查询一段时间品种的主力合约,返回的都是是日期为index,合约名称为值的Pandas.Series。这里可以用 Series自带的drop_duplicates(), 如果返回一个主力合约,说明没有切换;如果返回为2说明有切换,次数可以读取一个值的index作为切换日期输出到log文件备注。

def check_dominant(symbol,startdate,enddate) -> str:
   """
   传入合约名日期,返回str
   :param symbol:
   :return:
   """
   dominant_symbol_list = rq.get_dominant(symbol.upper(),startdate,enddate)
   if dominant_symbol_list is not None:
      last_symbol_series = dominant_symbol_list.tail(self.check_days+1).drop_duplicates()
      if len(last_symbol_series)>1:
         self.dominant_change =True
         strLen = f"请注意 在{list(last_symbol_series.index)[-1]}日,({symbol})主力合约切换: {last_symbol_series[-2]} -> {last_symbol_series[-1]}. "
         logger.info(strLen)


本来很平常一段使用,但是在log文件时往下写入,就是查询必须滚动到最下。如果很多,还真是麻烦。想有没有方法逆序写入log文档,最新的放在最上面;搜索logging文档和stackflow讨论;基本方案继承FileHandler重写写入文档方法,因为从头插入文件效率太低了,并不鼓励。


后面想想就找个笨方法吧,每次输出保存后,在按行读取反转从写一个逆序的log;自己写了些代码实现,感觉实在笨拙。无意搜索到一段简洁明了的python代码,感觉实在明了,可以算是pythonic code。分享如下:

with open(filename_sequence) as f, open(filename) as fout:
   fout.writelines(reversed(f.readlines()))


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-2842447/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SAP 金融风险管理产品专家

注册时间:2009-08-05

  • 博文量
    229
  • 访问量
    635943