标题:记坑 出处:Felix021 时间:Tue, 05 Mar 2013 15:39:04 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2108 内容: 1. Python的除法 线上有一个简单的函数,运行一年多了,作用是把"分"表示的字符串转成"元":def fen_to_yuan(str_fen): fen = int(str_fen) return '%d.%02d' % (int(fen / 100) , fen % 100) 看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是fen_to_yuan("-270")居然返回了"-3.30"!坑爹啊。简单测试一下,原来是这样:引用 >>> -270/100 -3 >>> -270%100 30 所以只好蛋疼地修改成这样:def fen_to_yuan(str_fen): fen = int(str_fen) sign, fen = fen < 0 and ('-', -fen) or ('', fen) return sign + '%d.%02d' % (int(fen / 100) , fen % 100) 2. 线上有一个脚本,要得到上个月的月份,bash的实现就是 引用 date -d "-1 month $date" +%m 看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是对于10月31号居然返回了10!坑爹啊。简单测试一下,原来是这样:引用 $ date -d "-1 month 20121031" +%Y-%m-%d 20121001 $ date -d "-1 month 20130331" +%Y-%m-%d 20130303 也就是说,先把月份减一,然后检查日期,超过当前月,再向上修正月份,再向上修正年份。 所以只好蛋疼地修改成这样: 引用 date -d "-1 month ${date:0:6}01" +%m #update: @whusnoopy补充说 向后查看1个月也会有这样的情况,总之记得用月来算是有坑的,千万注意。 3. crontab的小坑 crontab默认是不会读取.bashrc,需要自己去source一下.bashrc,并且不支持像bash一样用反引号来启动一个子命令(这个结论是错的,是因为%前面忘了加斜杠)。这个不展开细说了,有兴趣的试试吧。 Generated by Bo-blog 2.1.0