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 25 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python3.6简单反射操作示例
Jun 14 Python
python从入门到精通 windows安装python图文教程
May 18 Python
python实时检测键盘输入函数的示例
Jul 17 Python
python科学计算之narray对象用法
Nov 25 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
numpy数据类型dtype转换实现
Apr 24 Python
python可视化之颜色映射详解
Sep 15 Python
python实现双向链表原理
May 25 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
jquery 事件执行检测代码
2009/12/09 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
2013/01/04 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python中自定义函数的教程
2015/04/27 Python
Python合并多个Excel数据的方法
2018/07/16 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
服务员自我评价
2014/01/25 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
食品采购员岗位职责
2014/04/14 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
电影开国大典观后感
2015/06/04 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
商场广播稿范文
2015/08/19 职场文书
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android