欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

发布时间:2025/3/8 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 利用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批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。