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 13 Python
Python作用域用法实例详解
Mar 15 Python
完美解决python遍历删除字典里值为空的元素报错问题
Sep 11 Python
python和flask中返回JSON数据的方法
Mar 26 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
python matplotlib库直方图绘制详解
Aug 10 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
pandas 操作 Excel操作总结
Mar 31 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
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
用python3 返回鼠标位置的实现方法(带界面)
2019/07/05 Python
python如何删除文件中重复的字段
2019/07/16 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
C++是不是类型安全的
2014/02/18 面试题
毕业生自我鉴定
2013/12/04 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
农村门前三包责任书
2014/07/25 职场文书
Python中常见的导入方式总结
2021/05/06 Python
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技