[英]reading a line from a file and splitting it - python
我有一個只有1行數據(接近3 MB)的文件我需要將它分成更小的行並將輸出寫入新文件。
例如:
sample.txt - file 434D012000100009362D00000000069E0F0007000000DA434D01030010010003008000000000000000000000009C434D01200010000 ....等等
我想將整行分成更小的行,每行包含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')
這里我們使用帶有sentinel的iter()
函數循環一個函數,直到該函數返回空字符串''
。 我們循環的函數是使用functools.partial()
每次都使用參數23調用inputfile.read()
。 您可以使用lambda( lambda: inputfile.read(23)
),但partial()
更快。
使用函數作為生成器。 我非常喜歡陣列模塊 。
def bytesfromfile(f):
while True:
raw = array.array('c')
raw.fromstring(f.read(23))
if not raw:
break
yield raw
使用'c'
將值解釋為字符。 'B'
作為無符號字符,即0-255。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.