python得到文件版本信息,公司名和产品名1


python 得到文件版本信息 公司名和产品名  其他的信息都在返回的字典中
代码:
[python]
#---------------------------------------------------------------------- 
    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) 
     
            # \VarFileInfo\Translation 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%04X\parm_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"]) 

 

 

摘自 小驹的专栏

相关内容

    暂无相关文章

评论关闭