Am 28.01.2012 11:19 schrieb pistacchio:
the following code (in the main thread) works well, I grep some files
and the search until the first 100 results are found (writing the
results to a file), then exit:
command = 'grep -F "%s" %s*.txt' % (search_string, DATA_PATH)
p = Popen(['/bin/bash', '-c', command], stdout = PIPE)
BTW: That's double weird: You can perfectly call grep without a shell
in-between. And if you really needed a shell, you would use
p = Popen(command, shell=True, stdout=PIPE)
- while the better solution is
import glob
command = ['grep', '-F', search_string] + glob.glob(DATA_PATH +
'*.txt')
p = Popen(command, stdout=PIPE)
writing output: Broken pipe in the console:
It could be that this is an output of grep which tries to write data to
its stdout. But you are only reading the first 100 lines, and
afterwards, you close the pipe (implicitly).
Maybe you should read out everything what is pending before closing the
pipe/dropping the subprocess.
BTW: I don't really understand
if num_lines == 0:
break
else:
break
HTH,
Thomas
--
http://mail.python.org/mailman/listinfo/python-list