Multi-line strings with formatting
Carsten Haese
carsten at uniqsys.com
Fri Mar 23 13:10:50 EDT 2007
On Fri, 2007-03-23 at 09:54 -0700, gburdell1 at gmail.com wrote:
> When constructing a particularly long and complicated command to be
> sent to the shell, I usually do something like this, to make the
> command as easy as possible to follow:
>
> commands.getoutput(
> 'mycommand -S %d -T %d ' % (s_switch, t_switch) +
> '-f1 %s -f2 %s ' % (filename1, filename2) +
> '> %s' % (log_filename)
> )
>
> Can anyone suggest a better way to construct the command, especially
> without the "+" sign at the end of each line (except the last) ? If I
> take out the "+", then I need to move all the variables to the end, as
> so:
>
> commands.getoutput(
> 'mycommand -S %d -T %d '
> '-f1 %s -f2 %s '
> '> %s'
> % (s_switch, t_switch, filename1, filename2, log_filename)
> )
>
> or:
>
> commands.getoutput(
> '''mycommand -S %d -T %d \
> -f1 %s -f2 %s \
> > %s'''
> % (s_switch, t_switch, filename1, filename2, log_filename)
> )
You get the best of both worlds, i.e. one big multiline string with
in-line parameters, by using a mapping:
commands.getoutput(
'''mycommand -S %(s_switch)d -T %(t_switch)d \
-f1 %(filename1)s -f2 %(filename2)s \
> %(log_filename)s'''
% locals() )
Of course I'm assuming that s_switch etc. are local variables. If
they're not, well, they ought to be.
-Carsten
More information about the Python-list
mailing list