-
Notifications
You must be signed in to change notification settings - Fork 0
/
ch18.py
80 lines (64 loc) · 1.5 KB
/
ch18.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from difflib import Differ, unified_diff
import gzip
from pprint import pprint
def getVal(lines):
bytearr = []
for line in lines:
bytes = line.split()
# if len(bytes) == 0:
# continue
bytearr += (int(byte, 16) for byte in bytes)
return bytearray(bytearr)
if __name__ == '__main__':
f = gzip.open('deltas.gz', 'rb')
file_content = f.read().splitlines()
f.close()
info1 = []
info2 = []
for line in file_content:
line1 = line[:54].strip()
line2 = line[54:].strip()
# print line1
# print line2
# raw_input()
info1.append(line1)
info2.append(line2)
# file1 = '\n'.join(info1)
# file2 = '\n'.join(info2)
# f = open('delta1.txt', 'w')
# f.write(file1)
# f.close()
# f = open('delta2.txt', 'w')
# f.write(file2)
# f.close()
differ = Differ()
result = list(differ.compare(info1,info2))
common = []
left = []
right = []
neither = []
for line in result:
if line[0] == ' ':
common.append(line[1:])
elif line[0] == '-':
left.append(line[1:])
elif line[0] == '+':
right.append(line[1:])
elif line[0] == '?':
neither.append(line[2:])
elif line[:2] == '@@':
continue
else:
raise Exception('Problem: %s', line)
leftVal = getVal(left)
f = open('left.png', 'wb')
f.write(leftVal)
f.close()
rightVal = getVal(right)
f = open('right.png', 'wb')
f.write(rightVal)
f.close()
commonVal = getVal(common)
f = open('common.png', 'wb')
f.write(commonVal)
f.close()