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 09 Python
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
python 3.6.2 安装配置方法图文教程
Sep 18 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
python识别文字(基于tesseract)代码实例
Aug 24 Python
Python之Class&Object用法详解
Dec 25 Python
浅析Python3 pip换源问题
Jan 06 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
python中常见错误及解决方法
Jun 21 Python
Python趣味挑战之实现简易版音乐播放器
May 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笔记之:AOP的应用
2013/04/24 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
python实现在windows服务中新建进程的方法
2015/06/30 Python
在Django的视图中使用form对象的方法
2015/07/18 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python实现Event回调机制的方法
2019/02/13 Python
python flask框架实现重定向功能示例
2019/07/02 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
护士检查书
2014/01/17 职场文书
五一活动标语
2014/06/30 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
中秋节慰问信
2015/02/15 职场文书
2016年教师学习教师法心得体会
2016/01/20 职场文书