2

どこかに大きなファイルがあります (FTP/HTTP)。

したい

  1. N最初のバイトを ダウンロードし、
  2. ファイルに埋め込まれているヘッダーを確認する(バージョンが異なるかどうか)
  3. 次に、ダウンロードを続行する中止するかを決定します。

これは、私が想像していたほど簡単な作業ではありません (驚いたことに)。wget/を外部から呼び出しcurlても、良い解決策ではないようです (おそらく、正しいコマンド ライン オプションを見落としていたのでしょう)。

これを Python でできるだけ簡単に行うにはどうすればよいでしょうか?

ftp.retrbinary ブロックの合計が定義された値を超えるとすぐに例外を発生させるカスタムハンドラーについて考えていますが、私の目にはやり過ぎです。Python コードはエレガントであるべきですよね?

4

1 に答える 1

2

ヘッダーだけをチェックしたい場合は、GET ではなくHTTP Headを送信します。メッセージ本文なしで、GET と同じヘッダーを返します。

HEAD メソッドは、サーバーが応答でメッセージ本文を返してはならないことを除いて、GET と同じです。HEAD リクエストに応答して HTTP ヘッダーに含まれるメタ情報は、GET リクエストに応答して送信される情報と同一である必要があります。

HEAD は、こちらで詳しく説明されているように送信できます。


編集:

最初の N バイトが必要な場合は、 Range ヘッダーurllib2と組み合わせて使用​​できます。. Range: bytes=0-N

于 2013-01-31T10:41:26.610 に答える