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 相关文章推荐
django之session与分页(实例讲解)
Nov 13 Python
Java及python正则表达式详解
Dec 27 Python
python 不以科学计数法输出的方法
Jul 16 Python
学生信息管理系统python版
Oct 17 Python
Python3 实现串口两进程同时读写
Jun 12 Python
pip安装python库的方法总结
Aug 02 Python
wxPython色环电阻计算器
Nov 18 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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 日,周,月点击排行统计
2012/01/11 PHP
php数组去重的函数代码
2013/02/03 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP积分兑换接口实例
2015/02/09 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
PHP中的session安全吗?
2016/01/22 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
JS实现点击下载的小例子
2013/07/10 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
个人求职信范文分享
2013/12/13 职场文书
24岁生日感言
2014/01/13 职场文书
元旦晚会感言
2014/03/12 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
岗位职责范本大全
2015/02/26 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
创业计划书之寿司
2019/07/19 职场文书
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers
Python使用永中文档转换服务
2022/05/06 Python