香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

python实现批量获取指定文件夹下的所有文件的厂商信息


时间:2021-11-09 10:24 作者:admin610456


本文实例讲述了python/' target='_blank'>python实现批量获取指定文件夹下的所有文件的厂商信息的方法。分享给大家供大家参考。具体如下:

功能代码如下:

import os, string, shutil,re import pefile import codecs, sys import wx import struct #输出中打印Unicode字符 #sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout)  def addToDict(theDict,PEfile_Path,strCompanyName):   theDict.setdefault(PEfile_Path, [ ]).append(strCompanyName)  #存在就在基础上加入列表,不存在就新建个字典key  def IsPeFile(inputFileName):   '''''判断一个文件是否为PE文件'''   file = open(inputFileName, 'r')   dosSign = hex(struct.unpack("h",file.read(2))[0])   if (dosSign == "0x5a4d"):     file.seek(0x3c)     date_fNew = struct.unpack("l",file.read(4))[0]     file.seek(date_fNew)     peSign = hex(struct.unpack("h",file.read(2))[0])     if (peSign == "0x4550"):       return 1     else:       return 0   else:     return 0     #得到一个文件的厂商信息 #输入:文件路径 #输出:字典 def getCompanyName(PEfile_Path):   if not IsPeFile(PEfile_Path):   return {}   else:   dictCompany = {}   pe = pefile.PE(PEfile_Path)    p = re.compile('''''CompanyName:(.+)''')   for name in p.findall(pe.__str__()):     uniCompanyName = name.replace('\\x', '\\u').strip()     #strTemp = uniCompanyName.decode('unicode_escape')     addToDict(dictCompany, PEfile_Path, uniCompanyName)        writeDicToFile(dictCompany) #写入文件   return dictCompany  #得到文件夹中所有文件的厂商信息 #输入:文件夹路径 #输出:字典 def getCompanyNameFromDir(dir, dir_callback=None, file_callback=None):   dictAll = {}   for root, dirs, files in os.walk(dir):     for f in files:       file_path = os.path.join(root, f)       if file_callback: file_callback(file_path)       dictAll.update(getCompanyName(file_path))          return dictAll  def writeDicToFile(dicName, outputFileName="company.txt"):   """将字典写入文件中"""   fileOutput = open(outputFileName, "a+")   for key, value in dicName.items():     strTemp2 = '' + value[0]     strChina2 = strTemp2.decode('unicode_escape')      try:     fileOutput.write("%-*s" % (110, key))     fileOutput.write(strChina2.encode('gb2312'))   except UnicodeEncodeError, e:     pass     fileOutput.write("\n")      fileOutput.close()    #主函数 if __name__ == "__main__":   getCompanyNameFromDir(u"D:\\everydaySample\\1221\\10white")   print "ok finish" 

这里不解释,代码很简单.

出现的问题如下:

1. 写入中文.str.encode('gb2212')解决
2. 出现UnicodeEncodeError 的错误,用了try给忽略了

希望本文所述对大家的Python程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)