python实现批量获取指定文件夹下的所有文件的厂商信息
发布时间:2020-05-25 12:06:46 所属栏目:Python 来源:互联网
导读:本文实例讲述了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,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:everydaySample122110white")
print "ok finish"
这里不解释,代码很简单. 出现的问题如下: 希望本文所述对大家的Python程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
