我有一个只有 1 行数据的文件(接近 3 MB)我需要将其拆分为更小的行并将输出写入一个新文件。
例如:
sample.txt - 文件 434D012000100009362D00000000069E0F0007000000DA434D010300100100030080000000000000000000000009C434D01200010000 .... 等等
我想将整行拆分为更小的行,每行 23 个字节。即我如何编写一个python脚本来告诉这么多字符后的break
谢谢。
我有一个只有 1 行数据的文件(接近 3 MB)我需要将其拆分为更小的行并将输出写入一个新文件。
例如:
sample.txt - 文件 434D012000100009362D00000000069E0F0007000000DA434D010300100100030080000000000000000000000009C434D01200010000 .... 等等
我想将整行拆分为更小的行,每行 23 个字节。即我如何编写一个python脚本来告诉这么多字符后的break
谢谢。
以 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()
速度更快。
使用函数作为生成器。我非常喜欢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。