You are confusing bytes and characters. What the specification says is that you should send eight null bytes, not eight times the character "0" (which is chr(48)):
message = (chr(19) +
"BitTorrent protocol" +
8 * chr(0) + # <--- here
self.getInfoHash(torrentCont) +
self.peer_id)
# in case of doubt...
assert len(self.getInfoHash(torrentCont)) == 20
assert len(self.peer_id) == 20