应用 Python 解决一些实际问题
2010-09-22 12:02:06 来源:WEB开发网核心提示: import sysimport osimport string1headers=[("JFIF", 6,应用 Python 解决一些实际问题(3), "jpg"), ("GIF", thisext)31fid1 = open(imgn
import sys
import os
import string
1 headers=[("JFIF", 6, "jpg"), ("GIF", 0, "gif"), ("PNG", 1, "png")]
2 marker=[]
3 filename = "d:\\article\\ppt\\NORFA_COD.ppt"
try:
4 fid = open(filename, 'rb')
except:
5 sys.exit(1)
6 numlin = len(fid.readlines())
7 fid .seek(0)
8 i = 0; s = 0
9 curlin = fid.readline()
while i < numlin:
for flag, offset, ext in headers:
10 index = string.find(curlin, flag)
if index < 0:
11 continue
else:
12 pos = s + index -offset
13 marker.append((pos, ext))
14 s = s + len(curlin)
15 curlin = fid.readline()
16 i += 1
以上代码首先把要处理的文件以二进制格式逐行读入(9句),然后在其中寻找有没有包含1句headers里的图像标识。如果没有找到,就读取下一行(11句)。如果发现的话,就把图像的起始位置和标识记录在一个字典marker里(12-13句)。在扫描完整个文档后,可以得到一个包含图像信息的字典marker。
有了marker里的信息,就可以进行图像的保存工作了。这部分的代码是:
17 fid.seek(0)
18 j = len(marker)
19 imgnum = 0
if j == 0:
20 print "No images included in the document"
21 sys.exit(1)
for i in range(0, j):
22 if i == j-1:
23 info = marker[i]
24 thispos = info[0]
25 thisext = info[1]
26 nextpos = s
27 gap = nextpos - thispos
28 fid.seek(thispos)
29 data = fid.read(gap)
30 imgname = "imgname%02d.%s" % (i, thisext)
31 fid1 = open(imgname, 'wb')
32 fid1.write(data)
33 fid1.close()
34 imgnum += 1
else:
35 info = marker[i]
36 thispos = info[0]
37 thisext = info[1]
38 nextinfo = marker[i+1]
39 nextpos = nextinfo[0]
40 gap = nextpos - thispos
41 fid.seek(thispos)
42 data = fid.read(gap)
43 imgname = "imgname%02d.%s" % (i, thisext)
44 fid1 = open(imgname, 'wb')
45 fid1.write(data)
46 fid1.close()
47 imgnum += 1
48 fid.close()
49 print "%02d imgaes have benn extracted" % imgnum
编缉推荐阅读以下文章
- Python 测试框架: 寻找要测试的模块
- 使用 Python 实现多进程
- Python 测试框架: 用 Python 测试框架简化测试
- 也玩有道难题的双立方数问题:Python 版解法
- Python 2.6.2的字节码指令集一览
- Python 2.6.2的.pyc文件格式
- 以Python为例讨论高级编程语言程序的wire format与校验
- python操作sharepoint对象模型
- 【python实战】获取双色球开奖数据之简易版
- python 抓取分析 SGMLParser 实例
更多精彩
赞助商链接