Поэтому я сделал короткий скрипт Python для запуска файлов в Windows с неоднозначными расширениями, изучив их магическое число / подпись файла сначала:
Я хотел бы скомпилировать его в .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',
}
(Шестнадцатеричные байты - это просто произвольные байты, а не символы Юникода.)
Я предполагаю, что файл .py в этом формате работает, но я должен оставить его некомпилированным и каким-то образом все еще импортировать его в скомпилированный файл, и все еще есть куча постороннего контента, такого как {
и ,
, который / облажался.
Я посмотрел на YAML, и это было бы здорово, за исключением того, что для этого сначала требуются двоичные файлы с кодировкой base64, что на самом деле не то, что я хочу. Я бы предпочел, чтобы конфигурационный файл содержал шестнадцатеричные представления байтов. Но также и представления ASCII, если это все, что есть в подписи файла. И, возможно, также регулярные выражения. : D (Например, если формат на основе XML может быть записан с разным количеством пробелов)
Любые идеи?