Cameron Simpson <c...@cskk.id.au> wrote: > On 26Aug2020 15:09, Chris Green <c...@isbd.net> wrote: > >2qdxy4rzwzuui...@potatochowder.com wrote: > >> Join bytes objects with a byte object: > >> > >> b"\n".join(popmsg[1]) > > > >Aaahhh! Thank you (and the other reply). > > But note: joining bytes like strings is uncommon, and may indicate that > you should be working in strings to start with. Eg you may want to > convert popmsg from bytes to str and do a str.join anyway. It depends on > exactly what you're dealing with: are you doing text work, or are you > doing "binary data" work? > > I know many network protocols are "bytes-as-text, but that is > accomplished by implying an encoding of the text, eg as ASCII, where > characters all fit in single bytes/octets. > Yes, I realise that making everything a string before I start might be the 'right' way to do things but one is a bit limited by what the mail handling modules in Python provide.
E.g. in this case the only (well the only ready made) way to get a POP3 message is using poplib and this just gives you a list of lines made up of "bytes as text" :- popmsg = pop3.retr(i+1) I join the lines to feed them into mailbox.mbox() to create a mbox I can analyse and also a message which can be sent using SMTP. Should I be converting to string somewhere? I guess the POP3 and SMTP libraries will cope with strings as input. Can I convert to string after the join for example? If so, how? Can I just do:- msgbytes = b'\n'.join(popmsg[1]) msgstr = str(mshbytes) (Yes, I know it can be one line, I was just being explicit). ... or do I need to stringify the lines returned by popmsg() before joining them together? Thank you for all your help and comments! (I'm a C programmer at heart, preceded by being an assembler programmer. I started programming way back in the 1970s, I'm retired now and Python is for relaxation (?) in my dotage) -- Chris Green ยท -- https://mail.python.org/mailman/listinfo/python-list