Jeśli używasz Pythona 2.5 lub nowszego w systemie Windows, można też użyć Windows API bez pywin32 za pomocą ctypes.
from ctypes import windll, POINTER
from ctypes.wintypes import LPWSTR, DWORD, BOOL
SCS_32BIT_BINARY = 0 # A 32-bit Windows-based application
SCS_64BIT_BINARY = 6 # A 64-bit Windows-based application
SCS_DOS_BINARY = 1 # An MS-DOS-based application
SCS_OS216_BINARY = 5 # A 16-bit OS/2-based application
SCS_PIF_BINARY = 3 # A PIF file that executes an MS-DOS-based application
SCS_POSIX_BINARY = 4 # A POSIX-based application
SCS_WOW_BINARY = 2 # A 16-bit Windows-based application
_GetBinaryType = windll.kernel32.GetBinaryTypeW
_GetBinaryType.argtypes = (LPWSTR, POINTER(DWORD))
_GetBinaryType.restype = BOOL
def GetBinaryType(filepath):
res = DWORD()
handle_nonzero_success(_GetBinaryType(filepath, res))
return res
Następnie użyj GetBinaryType tak jak byś z win32file.GetBinaryType.
Uwaga, trzeba by wdrożyć handle_nonzero_success, które zasadniczo zgłasza wyjątek, jeśli zwracana jest wartość 0.
Byłoby miło, gdybym mógł uzyskać te informacje bez użycia modułu pywin32. – pkit
Wystarczy edytować odpowiedź, aby pokazać, jak to zrobić bez pywin32. –
@Martin. Dzięki za linki, zobaczę, czy mogę coś połączyć. – pkit