from string import ascii_letters, digits, punctuation
filename = r'i:\Python\test.file'
file = open(filename, 'rb')
data = file.read()
file.close()
bytesRead = len(data)
def bufferToHex(buffer, start, count):
accumulator = ''
for item in range(count):
accumulator += '%02X' % buffer[start + item] + ' '
return accumulator
def bufferToAscii(buffer, start, count):
accumulator = ''
for item in range(count):
char = chr(buffer[start + item])
if char in ascii_letters or \
char in digits or \
char in punctuation or \
char == ' ':
accumulator += char
else:
accumulator += '.'
return accumulator
index = 0
size = 20
hexFormat = '{:'+str(size*3)+'}'
asciiFormat = '{:'+str(size)+'}'
print()
while index < bytesRead:
hex = bufferToHex(data, index, size)
ascii = bufferToAscii(data, index, size)
print(hexFormat.format(hex), end='')
print('|',asciiFormat.format(ascii),'|')
index += size
if bytesRead - index < size:
size = bytesRead - index