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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
动态创建类实例代码
Oct 07 Python
python对url格式解析的方法
May 13 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
Apr 23 Python
python tkinter canvas使用实例
Nov 04 Python
python实现在一个画布上画多个子图
Jan 19 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
python与pycharm有何区别
Jul 01 Python
Django用户认证系统如何实现自定义
Nov 12 Python
python re的findall和finditer的区别详解
Nov 15 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 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中Object对象的笔记分享
2011/06/28 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
微信小程序表单弹窗实例
2018/07/19 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python里对list中的整数求平均并排序
2014/09/12 Python
Python中for循环控制语句用法实例
2015/06/02 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
python help函数实例用法
2020/12/06 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
求职简历中的自我评价分享
2013/12/08 职场文书
小学毕业感言500字
2014/02/28 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
司法局火灾防控方案
2014/06/05 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
个人年终总结结尾
2015/03/06 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL