3

拡張子のないファイルがいくつかあります。それらに拡張子を関連付けたいと思います。そのために、ファイル内のデータを読み取る python プログラムを作成しました。私の疑問は、サードパーティのツールを使用せずに、拡張子なしでそのタイプをどのように識別できるかです。

PDF、ドキュメント、およびテキスト ファイルのみを特定する必要があります。他のタイプのファイルは使用できません。

私のサーバーはcent osです

4

3 に答える 3

11

ファイルの最初の数バイトを読み取って、「マジック ナンバー」を探すことができます。マジック ナンバーに関するウィキペディアのページ%PDFでは、PDF ファイルは ASCIIで始まり、doc ファイルは 16 進数の D0 CF 11 E0 で始まることが示唆されています。

多くの標準的なマジック ナンバーは、実際にはバイナリ ファイルの先頭にある ASCII テキストであるため、テキスト ファイルの識別は一般的にかなり困難です。あなたの場合、PDF、DOC、またはTXT以外のものを取得しないことを保証できる場合、おそらく回避できるのは、PDFとDOCのマジックナンバーをチェックし、どちらでもない場合はテキストであると想定することですそれらの。

于 2012-08-30T05:01:39.390 に答える
5

あなたはあなたのOSを言っていません。file*nix ベースの場合、libmagic の周りに Python ラッパー (ctypes を使用)があり、内容を調べることで拡張子のないファイルを識別できるコマンドと同じ基本メカニズムを使用します。または、libmagic がファイル定義をどのように使用するかを調べて、2 つの主要なファイル タイプ (doc、pdf) をどのように識別し、残っているものはすべてテキストでなければならないかを調べます ;-) そして、既存のコードを拡張します。

于 2012-08-30T04:59:34.363 に答える
0

PDF ドキュメントは %PDF-version number で始まりますが、一部は完全に圧縮されている可能性があります。

于 2012-08-30T05:03:25.027 に答える