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之web模板应用
Dec 26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
Jan 13 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
Django中的FBV和CBV用法详解
Sep 15 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
Apr 16 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
python实现简单的三子棋游戏
Apr 28 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
初学Python函数的笔记整理
2015/04/07 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python学习入门细节知识点
2018/03/29 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
python 批量修改/替换数据的实例
2018/07/25 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
股份转让协议书
2014/04/12 职场文书
贷款承诺书范文
2014/05/19 职场文书
后备干部培训方案
2014/05/22 职场文书
庆元旦演讲稿
2014/09/15 职场文书
农村党员干部承诺书
2015/05/04 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs