On Mar 23, 1:25 pm, Steve Holden <[EMAIL PROTECTED]> wrote: > 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- Hide quoted text - > > - Show quoted text -
This list might be even simpler to follow: l = [ 'mycommand', '-S', s_switch, '-T', t_switch, '-f1', filename1, '-f2', filename2, '>', log_filename ] cmd = " ".join(l) (and I'm glad I'm not the only one who uses 'l' for a scratch list variable...) -- Paul -- http://mail.python.org/mailman/listinfo/python-list