python之excel自动报表
一、自动报表前期工作:
需要安装XlsxWriter模块,可以从github上下载以后解压、setup.py install。
二、程序:
#!/usr/bin/env python
# -*- coding=utf8 -*- import os
import re
import xlsxwriter
import sys
import collections # salt 172.18.144.69 cmd.run "salt-call hdfs_capacity.hdfs_cap decare"
def check_capacity():
value_dicts=collections.OrderedDict()
ns_list=str(os.popen("cat /software/servers/hadoop-2.7.1/etc/hadoop/hdfs-site.xml|grep -A 1 dfs.nameservices|grep -v dfs.nameservices| awk -F '>|<' '{print $3}'").read().strip().split("\n")).strip("['']").split(",")
for ns in ns_list:
result=os.popen("su - hadp -c 'hadoop dfs -count -q hdfs://%s/user/*'"%ns).read()
lists=[]
for line in result.strip().split("\n"):
temp_list = [i for i in re.split('\|+',line.strip().replace(" ","|")) if i !=' ']
temp_value = str(int(temp_list[6])/1024/1024/1024)
temp_list[6] = temp_value
lists.append(temp_list[4:])
value_dicts[ns]=sorted(lists, key=lambda temp:int(temp[2]),reverse=True)
return value_dicts def xml(value_dicts,cluster_name):
workbook = xlsxwriter.Workbook ('/tmp/%s_hdfs.xlsx'%cluster_name)
worksheet = workbook.add_worksheet ()
worksheet.set_column ('E:E', 40)
worksheet.set_column ('B:D', 15)
worksheet.set_row(0,20)
#设置格式
header_format = workbook.add_format ({'bold': True,'bg_color':'#7CCD7C','border':1,'align': 'center','valign': 'vcenter'})
value_format = workbook.add_format ({'border':1})
menu_format = workbook.add_format ({'bold': True,'border':1,'bg_color':'red','align': 'center','valign': 'vcenter'})
worksheet.write ('A1', u'ns',header_format)
worksheet.write ('B1', u'目录个数',header_format)
worksheet.write ('C1', u'文件个数',header_format)
worksheet.write ('D1', u'容量(单位GB)',header_format)
worksheet.write ('E1', u'用户目录',header_format)
ind_num=2
num=0
for index,keys in enumerate(value_dicts.keys()):
ind_num+=int(num)
num=0
for indexs,value in enumerate(value_dicts[keys]):
worksheet.write ('B%s'%str(int(indexs)+ind_num), value[0],value_format)
worksheet.write ('C%s'%str(int(indexs)+ind_num), value[1],value_format)
worksheet.write ('D%s'%str(int(indexs)+ind_num), value[2],value_format)
worksheet.write ('E%s'%str(int(indexs)+ind_num), value[3],value_format)
num=int(indexs)+1
if num-1 == 0:
worksheet.write ('A%s'%str(ind_num), keys,menu_format)
else:
#合并单元格
worksheet.merge_range(ind_num-1,0, ind_num+num-2,0,keys,menu_format)
workbook.close() def hdfs_cap(cluster_name):
try:
xml(check_capacity(),cluster_name)
except Exception,e:
return False
else:
return True if __name__ == "__main__":
cluster_name=sys.argv[1]
xml(check_capacity(),cluster_name)
三、后续:
考虑到本次程序是单一的,以后可以考虑到放到django中,通过salt-api来调用,并从页面出口。
python之excel自动报表的更多相关文章
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- python制作简单excel统计报表2之操作excel的模块openpyxl简单用法
python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...
- python与excel的关系;铁打的python流水的excel
现在很多行业,都离不开用Excel: 做财务的,要用Excel做报表:做物流的,会用Excel来跟踪订单情况:做HR的,会用Excel算工资:做分析的,会用Excel计算数据做报表.不知道你有没有这样 ...
- 震惊!当Python遇到Excel后,将开启你的认知虫洞
本文主要内容: 1. Excel,你为什么如此强大 2. 软件开发也需要团队作战 3. Excel的集成方案演化 4. macOS特有的集成方案:applescript 5. Python与Exc ...
- python读取excel一例-------从工资表逐行提取信息
在工作中经常要用到python操作excel,比如笔者公司中一个人事MM在发工资单的时候,需要从几百行的excel表中逐条的粘出信息,然后逐个的发送到员工的邮箱中.人事MM对此事不胜其烦,终于在某天请 ...
- python操作excel表格(xlrd/xlwt)
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- Python处理Excel(转载)
1. Python 操作 Excel 的函数库 我主要尝试了 3 种读写 Excel 的方法: 1> xlrd, xlwt, xlutils: 这三个库的好处是不需要其它支持,在任何操作系统上都 ...
- Python处理Excel生成CSV文档
Python是一种解释型的.动态数据类型的.面向对象的高级程序设计语言.拥有丰富的处理数据和文本类库,并且得益于它是一种解释型的语言,在程序修改和功能扩展上,可以很容易做到大规模的调整.综合考虑Pyt ...
- Python 利用Python操作excel表格之openyxl介绍Part2
利用Python操作excel表格之openyxl介绍 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群(群号:7156436) ## 绘图 c = LineChart() ...
随机推荐
- C++11新特性——初始化列表 initializer_list
破事水: 由于最近数据结构有个实验报告说是要对字符串进行排序,想偷个懒不想一个一个地赋值,虽然可以用strcpy和传入二级指针的形式直接写,但是这样感觉不美观漂亮. 然后就去膜了一下C++11的新特性 ...
- Java-开源工具类
一.集合 org.springframework.util.CollectionUtils: 二.字符串 com.google.common.base.Strings: org.apache.comm ...
- Google内部邮件:如何进行高效的时间管理能量波动图
Google内部邮件:如何进行高效的时间管理能量波动图 发布时间: 2015-12-16 22:16:50| 阅读数:462 views 最近,我给团队内部写了一封简单的邮件.主要内容是征询他们,如何 ...
- 一起来做webgame,《Javascript贪食蛇》
2019-09-22更新: 使用canvas实现:https://github.com/onlyfu/SnakeSir-Javascript 以下为HTML4实现: 今天来个略有意思的,<贪食蛇 ...
- Tomcat catalina.out日志使用log4j按天分割
由于tomcat catalina.out日志不会自动分割, 一.日志分割所需包在附近中 1. 压缩包中有三个jar包: log4j-1.2.16.jar tomcat-juli-adapters.j ...
- imx6 matrix keyboard
imx6需要添加4x4的矩阵键盘.本文记录添加方法. 参考链接 http://processors.wiki.ti.com/index.php/TI-Android-JB-PortingGuide h ...
- ActiveMQ简介
ActiveMQ 1.ActiveMQ是什么ActiveMQ是Apache推出的一款开源的完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Orien ...
- 现在web前端这么火,钱景怎么样啊?
web前端开发工程师可以说是一个全新的职业,在IT整个行业中真正受到重视的时间没有超过5年,也正因为这样,大家越来越想了解web前端工程师的前景究竟怎么样? web前端培训就业前景如何?web前端工程 ...
- Git(分布式版本控制系统)在Windows下的使用-将代码托管到开源中国(oschina)
一.Git是什么? Git --- The stupid content tracker, 傻瓜内容跟踪器.Git是目前世界上最先进的分布式版本控制系统. 二.SVN与Git的最主要的区别? ...
- Ubantu16.04一键部署Cacti监控服务器
Ubantu16.04一键部署Cacti监控服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入高级运维工程师之路:598432640 一.查看系统环境(关于该系统的安装 ...