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
投稿
猜你喜欢
Python去除字符串前后空格的几种方法
2021-12-22 02:10:02
在Qt中正确的设置窗体的背景图片的几种方法总结
2023-05-11 11:15:01
python基础入门之列表(一)
2023-11-23 19:33:42
让Dreamweaver MX显示最舒服的编程环境
2008-02-25 14:01:00
Python排序搜索基本算法之插入排序实例分析
2023-12-28 14:20:25
用Python实现服务器中只重载被修改的进程的方法
2022-06-21 05:11:38
解析python高级异常和运算符重载
2021-06-17 00:56:41
几款黑体的测试和介绍
2008-07-18 17:09:00
Django中的CBV和FBV示例介绍
2022-05-23 10:13:59
操作设计要素
2011-03-04 16:23:00
python开发游戏的前期准备
2022-01-06 12:58:01
语义化的HTML结构到底有何好处?
2009-07-13 12:38:00
Python pytorch实现绘制一维热力图
2022-04-03 21:09:14
python判断一个集合是否包含了另外一个集合中所有项的方法
2022-01-15 19:08:06
基于Python实现烟花效果的示例代码
2021-02-08 13:25:09
Python Celery异步任务队列使用方法解析
2023-05-18 02:34:53
chr()函数参照表 chr13 chr10 chr34
2009-09-03 13:22:00
Oracle9i的全文检索技术开发者网络Oracle
2010-07-18 13:22:00
PHP+Mysql基于事务处理实现转账功能的方法
2023-10-21 16:53:06
利用Python将图片中扭曲矩形的复原
2022-05-24 21:35:54