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编程实现蚁群算法详解
Nov 13 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
python让列表倒序输出的实例
Jun 25 Python
python二进制文件的转译详解
Jul 03 Python
Python编写打字训练小程序
Sep 26 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
Python如何用filter函数筛选数据
Mar 05 Python
Python实现打包成库供别的模块调用
Jul 13 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
python re的findall和finditer的区别详解
Nov 15 Python
python中用ggplot绘制画图实例讲解
Jan 26 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
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
jquery 构造函数在表单提交过程中修改数据
2015/05/25 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
HTML的select控件美化
2017/03/27 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
Python实现的一个简单LRU cache
2014/09/26 Python
深入浅析python with语句简介
2018/04/11 Python
python文件拆分与重组实例
2018/12/10 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
医学求职信
2014/05/28 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
文明家庭事迹材料
2014/12/20 职场文书
八达岭长城导游词
2015/01/30 职场文书
综治目标管理责任书
2015/05/11 职场文书
初中班主任工作随笔
2015/08/15 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书