How to write pbm file in Python 3?

André andre.roberge at gmail.com
Sun Oct 31 05:21:38 CET 2010


On Oct 31, 1:11 am, Chris Rebert <c... at rebertia.com> wrote:
> On Sat, Oct 30, 2010 at 8:32 PM, André <andre.robe... at gmail.com> wrote:
> > I'm trying to create pbm (portable bitmap) files using Python 3 and
> > have run into a problem.   The example I am using is the Python 2
> > Mandelbrot program found at
> >http://shootout.alioth.debian.org/u32/program.php?test=mandelbrot&lan...
>
> > When I run it using Python 2 with size=100, I get a file of size 1311
> > bytes.  This file contains the correct image.
>
> > When I run it using Python 3 with the same parameter (and replacing
> > xrange by range - the only change suggested by 2to3), I get a file of
> > size 1812 bytes; this file does not contain the right image.
>
> > Any help would be much appreciated.
>
> Have you tried changing all instances of chr(<whatever>) to
> bytes([<whatever>]) ?
Yes, I had.  And I got the following traceback:

Traceback (most recent call last):
  File "mandel_orig.py", line 39, in <module>
    main()
  File "mandel_orig.py", line 30, in main
    cout(bytes([byte_acc]))
TypeError: must be str, not bytes

André

> In Python 3, chr() always returns Unicode rather than a bytestring; I
> suspect this might be the cause of your problem.
>
> If my suggestion fixes things, then arguably 2to3 ought to have warned
> about chr() and thus you should report this as a bug.
>
> Cheers,
> Chris
> --http://blog.rebertia.com




More information about the Python-list mailing list