Python读取等宽数据文件

背景

  • 日志文件或者基于时间序列的文件,这种是等宽数据文件。
  • 小文件可以逐行读取然后用字符串分割,如果对性能有要求,推荐使用struct模块,这个模型是用C语言实现的。

准备数据

这里写图片描述

步骤

  • 指定要读取的数据文件
  • 定义数据读取方式
  • 逐行读取文件并按照格式把每行解析成单独的数据字段
  • 按照单独数据字段形式打印每一行

Python代码

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 05 20:47:27 2016

@author: zang
"""

import struct
import string

datafile = "struct_data.txt"

mask = "9s15s11s"

with open(datafile,"r") as f:
    for line in f:
        fields = struct.Struct(mask).unpack_from(line)
        print 'fields:',[field.strip() for field in fields]

运行结果:

runfile('G:/Python/read_file/untitled3.py', wdir='G:/Python/read_file')
fields: ['fsfdsafsa', 'fjdsalfjdslkfj', '1232431543']
fields: ['fadlkfhds', 'glkdfghjlakdfd', '3143124415']
fields: ['fahkjsdfh', 'hakjdffdsfdsfh', '2343785954']
fields: ['hjdfhsakj', 'sdjfhsdffsdfds', '4891234767']
fields: ['vdslkflkh', 'fsafhfdsfdsfzz', '4237489237']
fields: ['fdsjkfhkj', 'cbsalfghksdfgg', '1278436124']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值