python实现批量获取指定文件夹下的所有文件的厂商信息
作者:shichen2014 发布时间:2021-12-14 20:42:27
标签:python,文件,信息
本文实例讲述了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程序设计有所帮助。
0
投稿
猜你喜欢
- 介绍psutil能够轻松实现获取系统运行的进程和系统利用率。导入模块import psutils获取系统性能信息CPU信息使用cpu_tim
- 目录一、安装Py2neo二、连接Neo4j数据库1. 使用graph.run执行Cypher语句创建节点2. 使用Node数据结构创建节点3
- 如下所示:import sysfrom PyQt5 import QtGui, QtCore, QtWidgetsfrom PyQt5.Qt
- 写在前面的话:此篇还是asp相关的,相信玩ASP的都有这个感觉,当数据有5万多条时-------just like音乐网,要调用最新的10条
- 首先,啰嗦几句废话如下: (1)触发器(trigger)是个特殊的存储过程,它的执行并不需要我们去显式调用,而是由一些事件触发,这有点类似C
- 前言如果你的 Python 程序程序有大量的 import,而且启动非常慢,那么你应该尝试懒导入,本文分享一种实现惰性导入的一种方法。虽然P
- 一、前言关于什么是Dapper(详细入口),在此不做赘述;本文仅对Dapper在.Net Core中的使用作扼要说明,所陈代码以示例讲解为主
- 如何在线删除表或索引? <%Set conn1 = Server.CreateObject(&
- 话不多说,请看代码:<?phpdate_default_timezone_set("PRC"); error_re
- 本文实例为大家分享了python opencv实现图像配准与比较的具体代码,供大家参考,具体内容如下代码 from skimage
- 看一看自己写的类是否能符合这样的标准.要成为高手,我要走的路还很长.摘抄自《OOD 启示录》--Arthur J.Riel(1)所有数据都应
- 如何随机显示图片计数器?一切就绪,看看我们的代码:count.asp< html >< head >
- 决策树也是有监督机器学习方法。 电影《无耻混蛋》里有一
- 看到别人用td和table标签模拟的办法: 设置table的上、左padding
- 前言:今天我教大家如何利用Python自动化操作Excel,包括:介绍操作Excel的工具包、安装方法及操作Excel具体方法。对于每天有大
- 网上有这样一道题目:一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次
- 尽管 xml.etree.ElementTree 库通常用来做解析工作,其实它也可以创建XML文档。 例如,考虑如下这个函数:from xm
- 推荐阅读:Oracle读取excel数据oracle导出excel(非csv)的方法有两种,1、使用sqlplus spool,2、使用包体
- 一、DataFrame数据准备增、删、改、查的方法有很多很多种,这里只展示出常用的几种。参数inplace默认为False,只能在生成的新数
- 我们生活在信息繁杂的社会,尤其是在互联网时代,人们开始通过网络开始接触越来越多的信息,那么,如何获取/传递有效而准确的信息将非常重要。在网页