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使用socket进行简单网络连接的方法
Apr 29 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
Java与Python两大幸存者谁更胜一筹呢
Apr 12 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Django框架封装外部函数示例
May 28 Python
Python 分发包中添加额外文件的方法
Aug 16 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
解决pip install psycopg2出错问题
Jul 09 Python
如何Python使用re模块实现okenizer
Apr 30 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
分享vim python缩进等一些配置
2018/07/02 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
大学毕业通用个人的求职信
2013/12/08 职场文书
建筑人员岗位职责
2013/12/25 职场文书
写给老婆的检讨书
2014/02/21 职场文书
大学生社团活动总结
2014/04/26 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
2016入党心得体会范文
2016/01/06 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
Python利用zhdate模块实现农历日期处理
2022/03/31 Python