[Python-ideas] Adding 'bytes' as alias for 'latin_1' codec.

Terry Reedy tjreedy at udel.edu
Thu May 26 03:58:58 CEST 2011


On 5/25/2011 1:29 PM, INADA Naoki wrote:

> Sadly, Python 3's bytes is not bytestring.

By intention.

> import sys
> fin = open(sys.stdin.fileno(), 'r', encoding='latin1')
> fout = open(sys.stdout.fileno(), 'w', encoding='latin1')
> for n, L in enumerate(fin):
>      fout.write('{0:5d}\t{1}'.format(n, L))
>
> If using 'latin1' is Pythonic way to handle encoding transparent string,
> I think Python should provide another alias like 'bytes'.

I presume that you mean you would like to write
fin = open(sys.stdin.fileno(), 'r', encoding='bytes')
fout = open(sys.stdout.fileno(), 'w', encoding='bytes')

If such a thing were added, the 256 bytes should directly map to the 
first 256 codepoints. I don't know if 'latin1' does that or not. In any 
case, one can rewrite the above without decoding input lines.

with open('tem.py', 'rb') as fin, open('tem2.txt', 'wb') as fout:
   for n, L in enumerate(fin):
     fout.write('{0:5d}\t'.format(n).encode('ascii'))
     fout.write(L)

(sys.x.fineno raises fineno AttributeError in IDLE.)

-- 
Terry Jan Reedy




More information about the Python-ideas mailing list