4
Written by Alexander Belchenko, 2006
 
 
9
import pywintypes   # from pywin32 (http://pywin32.sf.net)
 
 
10
import win32api     # from pywin32 (http://pywin32.sf.net)
 
 
13
__all__ = ['get_file_version', 'FileNotFound', 'VersionNotAvailable']
 
 
14
__docformat__ = "restructuredtext"
 
 
17
class FileNotFound(Exception):
 
 
20
class VersionNotAvailable(Exception):
 
 
24
def get_file_version(filename):
 
 
25
    """Get file version (windows properties)
 
 
26
    :param  filename:   path to file
 
 
27
    :return:            4-tuple with 4 version numbers
 
 
29
    if not os.path.isfile(filename):
 
 
33
        version_info = win32api.GetFileVersionInfo(filename, '\\')
 
 
34
    except pywintypes.error:
 
 
35
        raise VersionNotAvailable
 
 
37
    return (divmod(version_info['FileVersionMS'], 65536) +
 
 
38
            divmod(version_info['FileVersionLS'], 65536))