On 09/09/2014 11:45 AM, Peter Otten wrote:
jarod...@libero.it wrote:
I want to use subprocess for run some programs But I need to be sure the
program end before continue with the other:
subprocess.call("ls")
cmd1 = i
p1 = subprocess.Popen(cmd1,shell=True,stdout=subprocess.PIPE)
while True:
if p1.poll() is None:
time.sleep(3)
pass
if p1.poll()==0:
print '#'
break
if p1.poll() is not None and p1.poll() != 0:
raise Exception('Error building Alignment using star with hg19
database')
This are not working. How can I do?
thanks in advance for the precious help
bw,
I don't understand why you would need this loop. Why don't you use
subprocess.call() and be done?
The OP is piping the process stdout so I assume he is going to read from
it in place of the pass in his example.
Since the subprocess is doing genome-wide sequence alignment (at least I
guess so from the exception string) there will be lots of output, which
would cause subprocess.call() to block.
Assuming that the posted code was indented correctly and was otherwise
run as posted this could also be the answer to the original question:
you have to keep on consuming data from the pipe or its buffer is going
to fill up and block everyhing. With a simple pass statement you do not
achieve anything that you can't do with call.
Wolfgang
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor