从文件中读取一行并将其拆分 - python

时间:2013-04-22 20:31:42

标签: python

我有一个只有1行数据的文件(接近3 MB)我需要将它分成更小的行并将输出写入新文件。

例如:

  

sample.txt - 文件   434D012000100009362D00000000069E0F0007000000DA434D01030010010003008000000000000000000000009C434D01200010000   ....等等

我想将整行分成更小的行,每行占23个字节。 即如何编写一个python脚本来告诉多个字符后的中断

感谢。

2 个答案:

答案 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。