python 按照分隔符导出excel表

我使用passwd文件做的实例

[root@iZ2ze1o0n0b42zks2le9byZ ~]#cat passwd.py
#!/bin/env python
#coding: utf-8
#********************************************************************
#Author:		liuhao
#QQ: 			1921160095
#Date: 			2020-05-28
#FileName:		passwd.py
#Copyright (C): 	2020 All rights reserved
#********************************************************************
import xlsxwriter
import sys
import datetime
import os
import importlib
#当前时间
today=datetime.datetime.now().strftime('%Y-%m-%d')
os.system('cp /etc/passwd /root/passwd')
# 把源文件考到目录下,扩展得话,其实里面可以执行脚本什么得
filename = '/root/passwd'
importlib.reload(sys)
workbook = xlsxwriter.Workbook('passwd' + today + '.xlsx')
# 创建表格
worksheet = workbook.add_worksheet('sheet1')
# 创建表格中得sheet
bold = workbook.add_format({'bold': True,'fg_color': '#F4B084','border': 1})
bord=workbook.add_format({'border': 1})
# 设置单元格格式
head = ['用户名','是否设置密码','UID','GID','用户家目录','shell']
# 设置标题
def new_excel():
    row=0
    col=0
    for i in (head):
        worksheet.write(row,col,head[col],bold)
        col += 1
    # 把标题循环输出到第一行
    row=1
    col=0
    passwdfile = open(filename)
    # 读取文件
    for line in passwdfile.readlines():
        line = line.strip()
        if not len(line) or line.startswith('#'):
            continue
            # 检测是否空行,如果是空行或者#号开头得行,就跳过
        for j in range(len(line.split(':'))):
        # 按照:分割
            if line.split(':')[j] !='':
                worksheet.write(row,col + j,line.split(':')[j],bord)
            else:
                worksheet.write(row,col + j,' ',bord)
        row += 1
        # 循环结束 行+1 
    passwdfile.close()
new_excel()
workbook.close()
[root@iZ2ze1o0n0b42zks2le9byZ ~]#

效果图
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章