Python method to get file version information company name and product name

  • 2020-04-02 14:11:56
  • OfStack

This article is an example of how python gets file version information, company name, and product name. The details are as follows:

This python code gets the file version information, company name, and product name. The rest of the information is in the returned dictionary. The specific code is as follows:


  def _getCompanyNameAndProductName(self, file_path): 
    """ 
    Read all properties of the given file return them as a dictionary. 
    """ 
    propNames = ('Comments', 'InternalName', 'ProductName', 
      'CompanyName', 'LegalCopyright', 'ProductVersion', 
      'FileDescription', 'LegalTrademarks', 'PrivateBuild', 
      'FileVersion', 'OriginalFilename', 'SpecialBuild') 
   
    props = {'FixedFileInfo': None, 'StringFileInfo': None, 'FileVersion': None} 
   
    try: 
      # backslash as parm returns dictionary of numeric info corresponding to VS_FIXEDFILEINFO struc 
      fixedInfo = win32api.GetFileVersionInfo(file_path, '\') 
      props['FixedFileInfo'] = fixedInfo 
      props['FileVersion'] = "%d.%d.%d.%d" % (fixedInfo['FileVersionMS'] / 65536, 
          fixedInfo['FileVersionMS'] % 65536, fixedInfo['FileVersionLS'] / 65536, 
          fixedInfo['FileVersionLS'] % 65536) 
   
      # VarFileInfoTranslation returns list of available (language, codepage) 
      # pairs that can be used to retreive string info. We are using only the first pair. 
      lang, codepage = win32api.GetFileVersionInfo(file_path, '\VarFileInfo\Translation')[0] 
   
      # any other must be of the form StringfileInfo%04X%04Xparm_name, middle 
      # two are language/codepage pair returned from above 
   
      strInfo = {} 
      for propName in propNames: 
        strInfoPath = u'\StringFileInfo\%04X%04X\%s' % (lang, codepage, propName) 
        ## print str_info 
        strInfo[propName] = win32api.GetFileVersionInfo(file_path, strInfoPath) 
   
      props['StringFileInfo'] = strInfo 
    except: 
      pass 
    if not props["StringFileInfo"]: 
      return (None, None) 
    else: 
      return (props["StringFileInfo"]["CompanName"], props["StringFileInfo"]["ProductName"]) 

I hope this article has helped you with your Python programming.


Related articles: