利用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, 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实现批量获取指定文件夹下的所有文件的厂商信息

本文地址: http://www.cppcns.com/jiaoben/python/114337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值