1

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

例如:

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

我想将整行拆分为更小的行,每行 23 个字节。即我如何编写一个python脚本来告诉这么多字符后的break

谢谢。

4

2 回答 2

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()函数''来循环函数,直到该函数返回空字符串。我们循环的函数每次都使用参数 23functools.partial()进行调用。inputfile.read()您可以改用 lambda ( lambda: inputfile.read(23)),但partial()速度更快。

于 2013-04-22T20:35:47.523 回答
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。

于 2013-04-22T20:37:00.113 回答