[EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > However, when the code in the string was actually > qsubcmds = """ > echo > cd %(cwd)s > %(cmds) %(args) > rm -f %(files)s > """ % vars() > > in which %(cmd)s folks a subprocess, when this string was write to some > pipe, e.g.: > > QSUB = Popen(qsubcmds, shell=True, stdin=PIPE) > print >> QSUB.stdin, qsubcmds > (or Popen.communicate(qsubcmds)) > > the "rm -f " was not executed in my case.
Not sure why you are sending the mini shell script to itself on stdin? That doesn't seem to make sense. Come up with a simple example everyone can try and post it running in an interactive python session. Here are my attempts to replicate your problem. This runs fine... >>> from subprocess import * >>> cmds="""echo one ... echo two ... echo three ... echo four ... """ >>> >>> out = Popen(cmds, shell=True, stdin=PIPE) >>> one two three four >>> As does this using stdin >>> cmds="""read A ... read B ... read C ... echo $C $B $A""" >>> out = Popen(cmds, shell=True, stdin=PIPE) >>> out.communicate("""one ... two ... three""") three two one (None, None) >>> -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list