R
Rochester
Hi,
I just found out that the general open file mechanism doesn't work
for named pipes (fifo). Say I wrote something like this and it
simply hangs python:
#!/usr/bin/python
import os
os.mkfifo('my_fifo')
open('my_fifo', 'r+').write('some strings.')
x = os.popen('cat my_fifo').read()
print x
I know I could use a tempfile instead of a fifo in this very
simple case, I just want to know is there a standard way of
handling fifos withing python. Especially the non-trivial case
when I want to call a diff like system program which takes two
files as input. Say I have two python string objects A and B, I
want to call diff to see what is the different between those two
strings, and return the finding as a string obj C back to python.
This certainly can be done in this way:
open('tmpfile1', 'w').write(A)
open('tmpfile2', 'w').write(B)
C = os.popen('diff tmpfile1 tmpfile2').read()
But that's kinda awkward isn't it? The Bash way of doing this
would be (suppose A is the stdout of prog2, B is the stdout of
prog3):
diff <(prog2) <(prog3) > C
What is the best way of doing this in Python?
Thank you!
I just found out that the general open file mechanism doesn't work
for named pipes (fifo). Say I wrote something like this and it
simply hangs python:
#!/usr/bin/python
import os
os.mkfifo('my_fifo')
open('my_fifo', 'r+').write('some strings.')
x = os.popen('cat my_fifo').read()
print x
I know I could use a tempfile instead of a fifo in this very
simple case, I just want to know is there a standard way of
handling fifos withing python. Especially the non-trivial case
when I want to call a diff like system program which takes two
files as input. Say I have two python string objects A and B, I
want to call diff to see what is the different between those two
strings, and return the finding as a string obj C back to python.
This certainly can be done in this way:
open('tmpfile1', 'w').write(A)
open('tmpfile2', 'w').write(B)
C = os.popen('diff tmpfile1 tmpfile2').read()
But that's kinda awkward isn't it? The Bash way of doing this
would be (suppose A is the stdout of prog2, B is the stdout of
prog3):
diff <(prog2) <(prog3) > C
What is the best way of doing this in Python?
Thank you!