簡體   English   中英

從文件中讀取一行並將其拆分 - python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM