我有一个只有1行数据的文件(接近3 MB)我需要将它分成更小的行并将输出写入新文件。
例如:
sample.txt - 文件 434D012000100009362D00000000069E0F0007000000DA434D01030010010003008000000000000000000000009C434D01200010000 ....等等
我想将整行分成更小的行,每行占23个字节。 即如何编写一个python脚本来告诉多个字符后的中断
感谢。
答案 0 :(得分:3)
以23字节块的形式读取文件:
from functools import partial
with open('sample.txt', 'rb') as inputfile, open(outputfilename, 'wb') as output:
for chunk in iter(partial(inputfile.read, 23), ''):
# chunk is 23 bytes small
output.write(chunk + '\n')
这里我们使用iter()
function和一个sentinel来循环一个函数,直到该函数返回空字符串''
。我们循环的函数是使用functools.partial()
每次都使用参数23调用inputfile.read()
。您可以使用lambda(lambda: inputfile.read(23)
),但partial()
更快。
答案 1 :(得分:0)
使用函数作为生成器。我非常喜欢array-module。
def bytesfromfile(f):
while True:
raw = array.array('c')
raw.fromstring(f.read(23))
if not raw:
break
yield raw
使用'c'
将值解释为字符。 'B'
作为无符号字符,即0-255。