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创建临时文件夹的方法
Jul 06 Python
Python 的内置字符串方法小结
Mar 15 Python
解决Python requests 报错方法集锦
Mar 19 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
django在保存图像的同时压缩图像示例代码详解
Feb 11 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
python识别验证码的思路及解决方案
Sep 13 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python的标准模块包json详解
2017/03/13 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
Python中的枚举类型示例介绍
2019/01/09 Python
python使用建议技巧分享(三)
2020/08/18 Python
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
Ref与out有什么不同
2012/11/24 面试题
学期评语大全
2014/04/30 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
2014年科技工作总结
2014/11/26 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书