title: Fixing AttributeError: 'file' object has no attribute 'buffer' (Python3)
body: <p>Python 2.7 on Ubuntu. I tried run small python script (file converter) for Python3, got error:</p>
  
  <pre><code>$ python uboot_mdb_to_image.py &lt; input.txt &gt; output.bin
  Traceback (most recent call last):
    File "uboot_mdb_to_image.py", line 29, in &lt;module&gt;
      ascii_stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='ascii', errors='strict')
  AttributeError: 'file' object has no attribute 'buffer'
  </code></pre>
  
  <p>I suspect it's caused by syntax differences between python 3 and python 2, here is script itself:</p>
  
  <pre><code>#!/usr/bin/env python3
  
  import sys
  import io
  
  BYTES_IN_LINE = 0x10 # Number of bytes to expect in each line
  
  c_addr = None
  hex_to_ch = {}
  
  ascii_stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='ascii', errors='strict')
  
  for line in ascii_stdin:
      line = line[:-1] # Strip the linefeed (we can't strip all white
                       # space here, think of a line of 0x20s)
      data, ascii_data = line.split("    ", maxsplit = 1)
      straddr, strdata = data.split(maxsplit = 1)
      addr = int.from_bytes(bytes.fromhex(straddr[:-1]), byteorder = 'big')
      if c_addr != addr - BYTES_IN_LINE:
          if c_addr:
              sys.exit("Unexpected c_addr in line: '%s'" % line)
      c_addr = addr
      data = bytes.fromhex(strdata)
      if len(data) != BYTES_IN_LINE:
          sys.exit("Unexpected number of bytes in line: '%s'" % line)
      # Verify that the mapping from hex data to ASCII is consistent (sanity check for transmission errors)
      for b, c in zip(data, ascii_data):
          try:
              if hex_to_ch[b] != c:
                  sys.exit("Inconsistency between hex data and ASCII data in line (or the lines before): '%s'" % line)
          except KeyError:
              hex_to_ch[b] = c
      sys.stdout.buffer.write(data)
  </code></pre>
  
  <p>Can anyone advice how to fix this please?</p>