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