google.appengine.api.files.records モジュール

概要

Files API。

バージョン 1.8.1 以降は非推奨: Google Cloud Storage クライアント ライブラリを使用してください。

軽量のレコード形式。

この形式は、leveldb のログファイル形式を実装しています: http://leveldb.googlecode.com/svn/trunk/doc/log_format.txt

leveldb で変更が決定された場合、形式の全仕様がそれに準拠します。

ログファイルの内容は、一連の 32 KB ブロックです。唯一の例外は、ファイルの末尾に部分ブロックが含まれる場合があることです。

各ブロックは一連のレコードで構成されています。

ブロック := レコード* トレーラー? レコード :=

チェックサム: uint32 // タイプとデータのマスクされた crc32c 長さ: uint16 タイプ: uint8 // FULL、FIRST、MIDDLE、LAST のいずれか データ: uint8[length]

レコードはブロックの最後の 6 バイト以内では始まりません(適合しないため)。残りのバイトはここではトレーラーを構成します。このトレーラーは完全にゼロバイトで構成される必要があり、リーダーはこれをスキップする必要があります。

参考: 現在のブロックに正確に 7 バイトが残っていて、長さがゼロでない新しいレコードが追加された場合、ライターは、ブロックの末尾 7 バイトを埋めるために、FIRST レコード(ユーザーデータのゼロバイトを含む)を送信する必要があり、その後、以降のブロックですべてのユーザーデータを送信する必要があります。

今後、さらにタイプが追加される可能性があります。一部のリーダーは理解できないレコードタイプをスキップし、それ以外のリーダーは一部のデータをスキップしたことを報告します。

FULL == 1 FIRST == 2 MIDDLE == 3 LAST == 4

FULL レコードには、ユーザー レコード全体の内容が含まれます。

FIRST、MIDDLE、LAST は、複数のフラグメントに分割されたユーザー レコードに使用されるタイプです(通常、ブロック境界のため)。FIRST はユーザー レコードの最初のフラグメントのタイプ、LAST はユーザー レコードの最後のフラグメントのタイプ、MID はユーザー レコードのすべての内部フラグメントのタイプです。

例: 一連のユーザー レコードを考えてみましょう。

A: 長さ 1000 B: 長さ 97270 C: 長さ 8000

A は、最初のブロックに FULL レコードとして格納されます。

B は 3 つのフラグメントに分割されます。最初のフラグメントは最初のブロックの残りを占め、2 番目のフラグメントは 2 番目のブロックの全体を占め、3 番目のフラグメントは 3 番目のブロックの前の部分を占めます。これにより、3 番目のブロックに 6 バイトの空きが残されます。このブロックは、トレーラーとして空のままになります。

C は 4 番目のブロックに FULL レコードとして格納されます。

内容

exception google.appengine.api.files.records.Errorソース

ベース: exceptions.Exception

このモジュールの例外のベースクラスです。

class google.appengine.api.files.records.FileReaderソース

ベース: object

records モジュールで使用するライターのインターフェース仕様。

FileReader は、位置と有効なシーク/位置決定によりリーダーを定義します。すべての読み取りは現在の位置で行われます。

read(size)ソース

ファイルからデータを読み取ります。

現在の位置からデータを読み取り、読み取られたデータブロックを越えて前進します。

パラメータ

size - 読み取るバイト数。

戻り値

バイトのイテラブル。読み取られたバイト数が「size」引数より小さい場合、ファイルの終わりに達したとみなされます。

tell()ソース

現在のファイルの位置を取得します。

戻り値

現在の位置がファイル内のバイト オフセット(整数)として返されます。

class google.appengine.api.files.records.FileWriterソース

ベース: object

records モジュールで使用するライターのインターフェース仕様。

write(data)ソース

データをファイルに書き込みます。

パラメータ

data – バイト配列、文字列またはバイトのイテラブル。

exception google.appengine.api.files.records.InvalidRecordErrorソース

ベース: google.appengine.api.files.records.Error

無効なレコードが見つかった場合に発生します。

class google.appengine.api.files.records.RecordsReader(reader)ソース

ベース: object

レコード形式のリーダー。

read()ソース

リーダーで現在の位置からレコードを読み取ります。

seek(*args, **kwargs)ソース

ファイルの現在位置を設定します。

引数は、基になるリーダーに直接渡されます。

tell()ソース

ファイルの現在位置を返します。

class google.appengine.api.files.records.RecordsWriter(writer, _pad_last_block=True)ソース

ベース: object

レコード形式のライター。

このライターは、with ステートメント内でのみ使用する必要があります。

with records.RecordsWriter(file) as writer:

writer.write(“record”)

with ステートメント スコープを終了するとき、RecordsWriter は最後のブロックを 0 で埋めます。

close()ソース
write(data)ソース

1 つのレコードを書き込みます。

パラメータ

data - 文字列、バイト配列またはバイト シーケンスとして書き込むレコードデータ。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python の App Engine スタンダード環境