开发工具
python版本:Python 3.6.1
python开发工具:JetBrains PyCharm 2018.3.6 x64
文件内容
代码
import struct
datafile = '一百万定宽数据.data'
mask = '9s14s5s' # 指定数据宽度为9个字符,14字符,5字符
with open(datafile, 'r') as f:
for line in f:
fileds = struct.Struct(mask).unpack_from(line.encode())
print('fields: ', [field.strip().decode() for field in fileds])
运行效果
100万定宽数据生成代码
import random
filename = '一百万定宽数据.data'
with open(filename, 'a+', encoding='utf-8') as f:
for j in range(1000000):
lines = ''
for i in range(28):
if i == 9 or i == 23:
lines += ' '
else:
num = random.choice('0123456789')
lines += num
f.writelines(lines + '\n')
总结
运用struct读取定宽数据文件时,需要指定每个字符串宽度,就可以将每个数据从文件中读取出来