Nếu bạn đang chạy Python 2.5 hoặc mới hơn trên Windows, bạn cũng có thể sử dụng API của Windows mà không cần PyWin32 bằng cách sử dụng 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
Sau đó, sử dụng GetBinaryType giống như bạn làm với win32file.GetBinaryType.
Lưu ý, bạn sẽ phải thực hiện handle_nonzero_success, mà về cơ bản ném một ngoại lệ nếu giá trị trả về là 0.
Nguồn
2009-08-29 16:08:37
Sẽ thật tuyệt nếu tôi có thể nhận được thông tin này mà không cần sử dụng mô-đun pywin32. – pkit
Chỉ cần chỉnh sửa câu trả lời để cho thấy cách bạn có thể làm điều này mà không cần pywin32. –
@Martin. Cảm ơn các liên kết, tôi sẽ xem liệu tôi có thể đặt một thứ gì đó cùng nhau không. – pkit