2016-07-01 6 views
1

私はファイル共有プログラムを作成しています。ファイルを送信するときには1024バイトしか送信せず、次に1024バイトを送信するなどします。私はscapyとソケットを使用していないので、私はこれを手動で行う必要があります。ファイルを1024バイトのチャンクに分割するにはどうすればよいですか?あなたは新しいブロックを毎回取得するので、ファイルをバイト数で分割する

while True: 
    block = f.read(1024) 
    if not block: 
     break 
    ... do stuff with block ... 

readへの各呼び出しは、データを読み取り、ファイルの位置を進め:

+0

そこで質問は何ですか? – Fredrik

+0

ファイルをそれぞれ1024バイトのチャンクに分割する方法はわかりません(最後のものは少なくなります)。 ... –

+1

ファイルを分割せずに1024バイトを読み込んで送り、次に1024バイトを読み返します – Fredrik

答えて

1

は、あなただけの単純なループを書くことができます。また、あなたはもう少し賢いことと同じロジックを実行しますが、少しクリーナーを見てforループで動作Pythonのジェネレータを作るために、二引数iterを使用することができます。

from functools import partial 

for block in iter(partial(f.read, 1024), b''): # Change b'' to '' for text mode file 
    ... do stuff with block ... 
関連する問題