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中的try和finally和with方法
May 05 Python
使用Python脚本将文字转换为图片的实例分享
Aug 29 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python打印特殊符号及对应编码解析
May 07 Python
Python requests模块安装及使用教程图解
Jun 30 Python
python3.7 openpyxl 在excel单元格中写入数据实例
Sep 01 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 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遍历文件夹与子目录的函数代码
2011/09/26 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
MVVM 双向绑定的实现代码
2018/06/21 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python学习笔记之多进程
2020/08/06 Python
python 获取计算机的网卡信息
2021/02/18 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
物流专业求职计划书
2014/01/10 职场文书
给校长的一封建议书
2014/03/12 职场文书
珠宝店促销方案
2014/03/21 职场文书
C++程序员求职信范文
2014/04/14 职场文书
个人租房协议书样本
2014/10/01 职场文书
Web应用开发TypeScript使用详解
2022/05/25 Javascript