En Fri, 22 Aug 2008 18:25:49 -0300, n00m <[EMAIL PROTECTED]> escribió:
> Is it possible to communicate in loop fashion? > > ==================================== > import subprocess as s > proc = s.Popen('cmd.exe', stdin=s.PIPE, stdout=s.PIPE) > while 1: > cmd = raw_input('cmd:') > res = proc.communicate(cmd + '\n')[0] > print res > ==================================== Don't use communicate, it waits for the process to finish. But you can write and read from the pipes. The hard part is to recognize *where* output from the previous command ends (so you don't read further). The code below uses #\n as the prompt: import subprocess as s def read_output(stdout): while 1: line = stdout.readline() if not line: break line = line.rstrip('\r\n') if line=='#': break yield line proc = s.Popen('cmd.exe /k prompt #$_', stdin=s.PIPE, stdout=s.PIPE) for line in read_output(proc.stdout): pass # skip over initial prompt while 1: cmd = raw_input('cmd:') proc.stdin.write(cmd+'\n') for line in read_output(proc.stdout): print line -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list