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


Posted in Python onSeptember 28, 2014

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python list使用示例 list中找连续的数字
Jan 27 Python
python随机生成指定长度密码的方法
Apr 04 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
Python编程深度学习绘图库之matplotlib
Dec 28 Python
Python之pymysql的使用小结
Jul 01 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
Python属性和内建属性实例解析
Jan 14 Python
postman和python mock测试过程图解
Feb 22 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python查看矩阵的行列号以及维数方式
May 22 Python
python反编译教程之2048小游戏实例
Mar 03 Python
python格式化字符串实例总结
Sep 28 #Python
python中文编码问题小结
Sep 28 #Python
python多重继承新算法C3介绍
Sep 28 #Python
wxPython窗口的继承机制实例分析
Sep 28 #Python
wxPython框架类和面板类的使用实例
Sep 28 #Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 #Python
wxPython学习之主框架实例
Sep 28 #Python
You might like
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
JavaScript 指导方针
2007/04/05 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
了解VUE的render函数的使用
2017/06/08 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python 可爱的大小写
2008/09/06 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python创建子类的方法分析
2019/11/28 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
学习Python列表的基础知识汇总
2020/03/10 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
专家推荐信范文
2015/03/26 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python