On Fri, 2007-03-23 at 09:54 -0700, [EMAIL PROTECTED] 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 -- http://mail.python.org/mailman/listinfo/python-list