Line-continuation "Anti-Idiom" and with statement

Neil Cerutti neilc at
Mon Nov 23 20:13:44 CET 2009

I installed Python 3.1 today, and I've been porting my small
library of programs to the new system.

I happened to read the interesting "Idioms and Anti-Idioms"
HOWTO, and saw the '\' continuation character labeled an
anti-idiom. I already generally avoided it, so I just nodded.

Unfortunately, the new "nested" with statement (which I also read
about today) forces me into this anti-idiom. When replacing an
appearance of contextlib.nested with the 3K with statement, I
ended up with an unexpected syntax error.

with (open(roster_path, 'r') as roster_file,
      open(disb_path, 'w') as out_file,
      open(report_path, 'w') as report_file):

The result was:

  File "C:\project\", line 184
    with (open(roster_path, 'r') as roster_file,
SyntaxError: invalid syntax

Unless I'm missing something, I have to subject my code to a bit
of contintuation:

with open(roster_path, 'r') as roster_file,\
     open(disb_path, 'w') as out_file,\
     open(report_path, 'w') as report_file:

I was thinking about submitting a enhancement request to the
HOWTO, explaining that continuation my be required in this
context. Am I missing anything obvious?

Neil Cerutti

More information about the Python-list mailing list