python实现批量获取指定文件夹下的所有文件的厂商信息

作者:shichen2014 时间:2021-12-14 20:42:27 

本文实例讲述了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,文件,信息
0
投稿

猜你喜欢

  • mysql 月份查询该月有付款的数据

    2024-01-19 08:37:37
  • Python实现批量压缩文件/文件夹zipfile的使用

    2021-03-08 07:08:21
  • 使用MySql和php出现中文乱码的解决方法

    2009-01-14 12:02:00
  • pre标签自动换行

    2009-03-13 13:37:00
  • Laravel 微信小程序后端实现用户登录的示例代码

    2024-06-05 15:40:52
  • 一文详解如何使用Python批量拼接图片

    2023-08-12 04:15:37
  • python实现k均值算法示例(k均值聚类算法)

    2021-04-24 20:27:39
  • Python3.7+tkinter实现查询界面功能

    2023-05-16 18:24:54
  • python实现画桃心表白

    2021-05-14 16:27:00
  • 详解Python3中yield生成器的用法

    2021-09-03 05:59:27
  • 如何制作一个从Access数据库中读取记录的下拉菜单?

    2010-06-29 21:23:00
  • WPF框架Prism中ViewModelLocator用法介绍

    2024-05-13 09:17:27
  • python 实现rolling和apply函数的向下取值操作

    2022-03-15 07:10:08
  • Pandas实现批量拆分与合并Excel的示例代码

    2022-06-07 22:36:28
  • Python发送http请求解析返回json的实例

    2022-04-11 03:38:28
  • 解读Python脚本的常见参数获取和处理方式

    2022-07-17 03:36:02
  • 如何在Vue单页面中进行业务数据的上报

    2024-04-26 17:42:13
  • Go语言实现socket实例

    2024-02-04 20:17:30
  • 设计需知:移动网站设计应注意的技术细节

    2012-04-20 13:03:23
  • Python使用openpyxl复制整张sheet

    2023-11-21 23:09:18
  • asp之家 网络编程 m.aspxhome.com