在python中将文本文件分成更小的块

时间:2013-09-12 09:52:51

标签: python python-2.7

我有一个文本文件(以MB为单位),我想把它分成块(以KB为单位)。我正在模拟网络上的文件传输行为。到目前为止,我能够根据用户输入的行数(由'\ n'分隔)制作块,如此

def make_chunks(fname):
    ifile = file(fname,'rb')
    file_iter = iter(ifile)
    args = [file_iter] * 10 # No of lines you want to have in one chunk
    chunks = list(izip_longest(fillvalue = None, *args))

但是这些块现在有不同的大小。我如何制作相同大小的块(比如4KB)

1 个答案:

答案 0 :(得分:6)

您可以通过实际的字节大小来填充:

def chunk(fname):
    with open(fname, 'rb') as fin:
        return list(iter(lambda: fin.read(4096), ''))

请注意,您也可以yield每个块而不是构建列表,并让调用者决定是否要构建列表。

for chunk in iter(lambda: fin.read(4096), ''):
    yield chunk