そこで、最初にマジック ナンバー/ファイル署名を調べて、あいまいな拡張子を持つファイルを Windows で起動する短い Python スクリプトを作成しました。
関連付けを簡単にするために .exe にコンパイルしたいのですが (bbfreeze を使用するか、C で書き直してください)、一致するバイト文字列とプログラム パスを指定するには、ある種のユーザー フレンドリーな構成ファイルが必要です。基本的に、この情報を何らかの形でプレーンテキストファイルに入れたいと思っています:
magic_numbers = {
# TINA
'OBSS': r'%PROGRAMFILES(X86)%\DesignSoft\Tina 9 - TI\TINA.EXE',
# PSpice
'*version': r'%PROGRAMFILES(X86)%\Orcad\Capture\Capture.exe',
'x100\x88\xce\xcf\xcfOrCAD ': '', #PSpice?
# Protel
'DProtel': r'%PROGRAMFILES(X86)%\Altium Designer S09 Viewer\dxp.exe',
# Eagle
'\x10\x80': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
'\x10\x00': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
'<?xml version="1.0" encoding="utf-8"?>\n<!DOCTYPE eagle ': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
# PADS Logic
'\x00\xFE': r'C:\MentorGraphics\9.3PADS\SDD_HOME\Programs\powerlogic.exe',
}
(16 進バイトは、Unicode 文字ではなく、単なる任意のバイトです。)
この形式の .py ファイルは機能すると思いますが、コンパイルされていないままにして、何らかの形でコンパイル済みファイルにインポートする必要があり{
ます,
。
私は YAML を調べましたが、最初に base64 エンコードのバイナリーを必要とすることを除けば素晴らしいと思いますが、これは私が本当に望んでいるものではありません。構成ファイルにバイトの 16 進表現を含めることをお勧めします。しかし、それがすべてのファイル署名である場合は、ASCII表現も。そして多分また正規表現。:D (たとえば、XML ベースの形式をさまざまな量の空白で記述できる場合)
何か案は?