背景
- 日志文件或者基于时间序列的文件,这种是等宽数据文件。
- 小文件可以逐行读取然后用字符串分割,如果对性能有要求,推荐使用
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']