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() ...
随机推荐
- grpc例子
grpc是google在github于2015年开源的一款RPC框架,虽然protobuf很早google就开源了,但是google一直没推出正式的开源框架,导致github上基于protobuf的r ...
- [daily][toolchain] 我的日常软件集
序: 工欲善其事,必先利其器.针对各种各样的工作,我同样也在寻找各种各样的工具.记录以备忘,因为真的会忘... 已用的,在用的,就不记了.只记下新用的,其他的有时间慢慢补充进来. 文档编辑: Mark ...
- shell 条件判断
一.数值判断 INT1 -eq INT2 INT1和INT2两数相等为真 INT1 -ne INT2 INT1和INT2两数不等为真 INT1 -gt INT2 ...
- Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法
引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...
- JQuery中的选择器的总结
JQuery的选择器十分的强大,但是我平常经常用到的却十分的有限,趁现在有时间我感觉有必要总结一下. 基本选择器 $("#ID") 选择ID所对应的标签元素 返回一个标签元素$(& ...
- ncurses库的一些函数
为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱.so,便想着能不能用下 ncurses这个字符图形库 总结一下,就是这样. 使用ncurses时,先需要初始化窗口,程序结束时,主动调 ...
- HBASE数据模型&扩展和负载均衡理论
示例数据模型 HBase中扩展和负载均衡的基本单元成为region,region本质上是以行健排序的连续存储区间.如果region太大,系统会把它们 自动拆分,相反的,就是把多个region合并,以减 ...
- 【译】SQL Server索引进阶第八篇:唯一索引
原文:[译]SQL Server索引进阶第八篇:唯一索引 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就 ...
- js 转码 和 .Net 后台解码
为防止 中文乱码,js传值要转码,当js 用 escape() 转码时,.Net 后台可以用 HttpUtility.UrlDecode() 进行解码. 例如: document.cookie = ...
- Chrome 中的 JavaScript 断点设置和调试技巧
Console:此功能是模拟js控制台,直接写代码,查看结果.高级功能使用时开启断点,查看变量的变化过程.还可以条用函数. Resources:次功能是查看加载页面所用的资源,链接的数据库,域名下保存 ...