python出报表
Posted 慢乌龟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python出报表相关的知识,希望对你有一定的参考价值。
python出报表使用到了数据库访问,文件读写,字符串切片处理。还可以扩展到电子邮件的发送,异常处理以及定时批任务。
总之在学习中发现还是有蛮多乐趣在其中。
1 #coding=utf-8 2 __date__=\'20181120\' 3 4 import cx_Oracle 5 import os 6 import time 7 8 isExt=os.path.exists(\'V:/report/%s\'%time.strftime(\'%Y%m%d\',time.localtime())) 9 if not isExt: 10 os.mkdir(\'V:/report/%s\'%time.strftime(\'%Y%m%d\',time.localtime())) 11 file_name=\'V:/report/%s/%s.txt\'%(time.strftime(\'%Y%m%d\',time.localtime()),time.strftime(\'%Y%m%d\',time.localtime())) 12 13 sql=\'\'\'select t.merchant, 14 t.type, 15 aes128_decrypt(t.accountno) accountno, 16 t.amount, 17 t.seq, 18 t.date, 19 t.merchant_order_id, 20 t.merchant_order_date, 21 t.charge, 22 t.success_time, 23 decode(t.status,\'00\',\'成功\',\'01\',\'失败\') status 24 from hpay.trans_info_log t 25 where t.type = \'debit\' 26 and t.status = \'00\' 27 \'\'\' 28 29 conn=cx_Oracle.connect(\'username/password@host:port/SERVICE_NAME\') 30 c=conn.cursor() 31 x=c.execute(sql) 32 results=x.fetchall()#得到总结果 33 with open(file_name,\'w\') as f:#w表示写 34 f.write(\'总条数=%s\\n商户号|交易类型|银行卡号|交易金额|交易流水号|交易时间|商户订单号|商户订单时间|交易手续费|交易成功时间|交易状态\\n\'%len(results)) 35 for re in results:#遍历每一行 36 with open(file_name,\'a\') as w:#a表示追加 37 acctno=str(re[2]) 38 newacctno=(acctno[:4]+acctno[-4:].rjust(len(acctno)-4,\'*\'))#对卡号进行特殊处理,卡号前4后4中间*号显示 39 w.write(str(re[0])+\'|\'+str(re[1])+\'|\'+str(newacctno)+\'|\'+str(re[3])+\'|\'+str(re[4])+\'|\'+str(re[5])+\'|\'+str(re[6])+\'|\'+str(re[7])+\'|\'+str(re[8])+\'|\'+str(re[9])+\'|\'+str(re[10])+\'\\n\') 40 c.close() 41 conn.close() 42
运行代码,得到结果展示:
额外补充一下字符串对齐各种方法的区别:
S.ljust(width,[fillchar]) #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
S.rjust(width,[fillchar]) #右对齐
S.center(width, [fillchar]) #中间对齐
S.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
以上是关于python出报表的主要内容,如果未能解决你的问题,请参考以下文章
Error: Python executable “H:devpython3.10python.EXE“ is v3.10.0, which is not supported by gyp.(代码片段