我正在编写一个文件共享程序,当我发送一个文件时,我只想发送1024字节,然后再发送下一个1024字节,以此类推。我使用scapy而不是套接字,所以我需要手动执行此操作。如何将文件划分为每个1024字节的块?
你可以写一个简单的循环:
while True:
block = f.read(1024)
if not block:
break
... do stuff with block ...
每次调用read
读取数据并推进文件位置,因此每次都得到一个新块。或者,你可以更聪明一点,使用两个参数的iter
来制作一个Python生成器,它执行相同的逻辑,但使用for
循环看起来更干净:
from functools import partial
for block in iter(partial(f.read, 1024), b''): # Change b'' to '' for text mode file
... do stuff with block ...