Carsten Haese wrote: > 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 > > If that doesn't suit then build a list:
l = [ 'mycommand -S %d -T %d ' % (s_switch, t_switch) , '-f1 %s -f2 %s ' % (filename1, filename2) , '> %s' % (log_filename) ] and then return commands.getoutput("".join(l)). regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden Recent Ramblings http://holdenweb.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list