what does := means simply?
bartc
bc at freeuk.com
Sat May 19 18:14:08 EDT 2018
On 19/05/2018 20:47, Dennis Lee Bieber wrote:
> On Sat, 19 May 2018 13:28:41 +0100, bartc <bc at freeuk.com> declaimed the
> following:
>
>
>> Out of interest, how would Python handle the headers for binary file
>> formats P4, P5, P6? I'd have a go but I don't want to waste half the day
>> trying to get past the language.
>>
> Based upon http://netpbm.sourceforge.net/doc/ppm.html
>
> P6 1024 768 255
>
> and
>
> P6
> # random comment
> 1024
> 768
> # another random comment
> 255
>
> are both valid headers.
The comments and examples here:
https://en.wikipedia.org/wiki/Netpbm_format, and all actual ppm files
I've come across, suggest the 3 parts of the header (2 parts for P1/P4)
are on separate lines. That is, separated by newlines. The comments are
a small detail that is not hard to deal with.
I think if ppm readers expect the 2-3 line format then generators will
be less tempted to either stick everything on one line or stretch it
across half a dozen. The point of ppm is simplicity after all.
And actually, a ppm reader I've just downloaded, an image viewer that
deals with dozens of formats, had problems when I tried to put
everything on one line. (I think it needs the signature on its own line.)
> Reading an arbitrary PPM thereby is going to be tedious.
PPM was intended to be simple to read and to write (try TIFF, or JPEG,
for something that is going to be a lot more work).
>>>> ppmfil = open("junk.ppm", "wb")
(ppmfil? We don't have have 6-character limits any more.)
>>>> header = struct.pack("3s27s",
> ... b"P6 ",
> ... bytes("%8s %8s %8s\n" %
> ... (width, height, maxval),
> ... "ASCII"))
>>>>
>>>> header
> b'P6 1024 768 255\n'
Hmm, I'd write this elsewhere, if it's going to be one line, as just:
println @f,"P6",width,height,"255"
I'm sure Python must be able to do something along these lines, even if
it's:
f.write("P6 "+str(width)+" "+str(height)+" 255\n")
with whatever is needed to make that string compatible with a binary
file. I don't know what the struct.pack stuff is for; the header can
clearly be free-format text.
> And how would that language handle Unicode text?
That's not relevant here. (Where it might be relevant, then Unicode must
be encoded as UTF8 within an 8-bit string.)
--
bartc
More information about the Python-list
mailing list