[Python-Dev] RFC: PEP 460: Add bytes % args and bytes.format(args) to Python 3.5 (original) (raw)
R. David Murray rdmurray at bitdance.com
Sat Jan 11 21:40:43 CET 2014
- Previous message: [Python-Dev] RFC: PEP 460: Add bytes % args and bytes.format(args) to Python 3.5
- Next message: [Python-Dev] RFC: PEP 460: Add bytes % args and bytes.format(args) to Python 3.5
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, 11 Jan 2014 11:54:26 -0800, Ethan Furman <ethan at stoneleaf.us> wrote:
On 01/11/2014 11:49 AM, Stephen J. Turnbull wrote: > MRAB writes: > > > > with open("outfile.pdf", "w", encoding="latin-1") as f: > > > f.write(pdf) > > > > > [snip] > > The second example won't work because you're forgetting about the > > handling of line endings in text mode. > > Not so fast! Forgot, yes (me too!), but not work? Not quite: > > with open("outfile.pdf", "w", encoding="latin-1", newline="") as f: > f.write(pdf) > > should do the trick.
Well, it's good that there is a work-a-round. Are we going to have a document listing all the work-a-rounds needed to program a bytes-oriented style using unicode?
That's not a work-around (if you are talking specifically about the newline=""). That's just the way the python3 IO library works. If you want to preserve the newlines in your data, but still have the text-io machinery count them for deciding when to trigger io/buffering behavior, you use newline=''.
It's not the most intuitive API, so I won't be surprised if a lot of people don't know about it or get confused by it when they see it. I first learned about it in the context of csv files, another one of those legacy file protocols that are mostly-text-but-not-entirely.
--David
- Previous message: [Python-Dev] RFC: PEP 460: Add bytes % args and bytes.format(args) to Python 3.5
- Next message: [Python-Dev] RFC: PEP 460: Add bytes % args and bytes.format(args) to Python 3.5
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]