【python 数据处理-常用函数 总结一】

日常应用知识点:

1,zip函数使用;

2,Excel读写处理

3,字符串数据处理

4,文件夹的读取

应用场景:

昨天上班产品突然打电话要求帮忙整理一下数据,大概是这样的需求,一个文件夹下有N个设备,每个设备下是这样的组织形式,要求把每条记录导入成Excel.

 

期望结果:

 

 思路:  整理数据源---->  写入Excel

一,整理数据源:

1,读取文件;files=os.listdir(filepath),

准备四个集合(用于收集输出到excel中的四列数据)  a2,a3,a4,a5

2,获取文件中所有设备所在路径,并存入集合a(通过拼接\\);

for i in files:
    d=dirct+'\\'+i
    # print(d)
    a.append(d)

3,获取所有设备下--所有日志文件所在路径,并存入集合a1(通过拼接路径)

for o in a:

    file1=os.listdir(o)
    for p in file1:
        d1=o+'\\'+p
        # print(d1)
        a1.append(d1) 

!!!获取a1中的设备及文件(通过split 进行路径拆分)各自的集合(不适用于这一步,大家可以思考一下原因!)

4,循环读取a1集合中的所有日志中的内容

     

for k in a1:(以下全部在循环中进行)
    with open(k, "r", encoding="UTF-8") as f:

                 1,对读取到的日志内容进行处理

                2,去除空格等

         names_list = [line.strip() for line in f if line.strip()]

                ,3,  抽取需要的日志内容1,日志2

                  

    s1=names_list[::2]    日志1集合
    s2=names_list[1::2]   日志2集合

        

         4,获取a1中的设备及文件(通过split 进行路径拆分)各自的集合

          c=k.split('\\')

           每次循环将(设备名称,日志文件,日志1,日志2)等存入相应的集合中

            

           

     循环结束   ---  验证获取到的每个集合中的数据长度一致

   print(len(a1)....)

    得到四个集合后需要通过zip组装成最终的数据源集合:

a6=list(zip(a2,a3,a4,a5))

二,Excel 进行写入:

filename = 'log.xlsx'
wb = xlsxwriter.Workbook(filename, {'constant_memory': True})
ws = wb.add_worksheet('log')


t=1  (行)
j=0    列
ws.write_row(0,0,('文件夹名称(设备名称)','日志文件','日志内容1','日志内容2'))

for i in a6:

    ws.write_row(t, j, i)
    t+=1

wb.close()

   


补充内容

worksheet.write_row()
write_row(row, col, data[, cell_format])
从(row, col)处开始写入行。
参数:
row(int) - 单元格所在的行(索引从0开始计数)。
col(int) - 单元格所在的列(索引从0开始计数)。
data - 写入单元格的数据。变量类型。
cell_format(Format) - 可选的格式化对象。
write_row()方法可以用于向单元格一次性写入一个列表的数据。在将数据库查询结果转换到Excel工作表时很有用。在写入数据时调用write()方法。例如:
# 一些示例数据。
data = ('Foo', 'Bar', 'Baz')
 
# 将数据写入单元格序列。
worksheet.write_row('A1', data)
 
# 上面的例子等价于:
worksheet.write('A1', data[0])
worksheet.write('B1', data[1])
worksheet.write('C1', data[2])
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值