処理したい実際のファイルのコンテナである txt ファイルの大規模なコレクションを処理しようとしています。txt ファイルには、処理している個々のファイルの境界を設定する sgml タグがあります。含まれているファイルは、uuencode されたバイナリである場合があります。uuencoded ファイルのデコードの問題は解決しましたが、解決策を熟考していたときに、十分に一般的ではないと判断しました。つまり、今まで使っていた
if '\nbegin 644 ' in document['document']
ファイルが uuencode されているかどうかをテストします。私はいくつかの検索を行い、644 が何を意味するか (ファイルのアクセス許可) を漠然と理解していました。
if '\nbegin 642 ' in document['document']
または他のいくつかの代替品でさえ。したがって、私の問題は、uuencode ファイルを含むすべてのサブコンテナを確実にキャプチャ/識別する方法です。
1 つの解決策は、すべてのサブコンテナーをテストすることです。
uudecode=codecs.getdecoder("uu")
for document in documents:
try:
decoded_document,m=uudecode(document)
except ValueError:
decoded_document=''
if len(decoded_document)==0
more stuff
これは恐ろしいことではありません。CPU サイクルは安価ですが、約 800 万のドキュメントを処理することになります。
したがって、特定の文字列が uuencoding の結果であるかどうかを認識するより堅牢な方法はありますか?