ほとんどのログ処理システムでは、ログ ファイルはタブ区切りのテキスト ファイルであり、ファイルのスキーマは個別に提供されます。例えば。
12 tom tom@baidu.com
3 jim jim@baidu.com
スキーマは
id : uint64
name : string
email : string
このperson.name == 'tom' のようなレコードを見つけるには、コードは
for each_line in sys.stdin:
fields = each_line.strip().split('\t')
if feilds[1] == 'tom': # magic number
print each_line
マジックナンバーは1 2 3が多いです。
Google プロトコル バッファ (バイナリ用) のようなツールはありますか?テキストから直接オブジェクトを構築できますか?
Message Person {
uint64 id = 1;
string name = 2;
string email = 3;
}
したがって、次のように person をビルドします: person = lib.BuildFromText(line)
for each_line in sys.stdin:
person = lib.BuildFromText(each_line) # no magic number
if person.name == 'tom':
print each_line