How to detect EOF from a stream ?

Spendius spendius at muchomail.com
Mon Aug 26 10:48:22 EDT 2002


Hi,
I'm a newbie in Python (and found no answer when searching to the
question I'm asking here): if with the following Java 
" import java.io.*;
" class t12
" {
"   public static void main(String args[])
"   {
"     t12 test = new t12();
"   }
" 
"   public t12()
"   {
"     Process osProcess = null;
"     try {
"       osProcess = Runtime.getRuntime().exec("<cmd>");
" 
"       InputStream is = new BufferedInputStream(osProcess.getInputStream());
" 
"       int numChar = 0;
"       while (numChar != -1)
"       {
"         numChar = is.read();
"         System.out.println(numChar+" "+(char)numChar);
"       }
"     } catch (IOException ioe) {
"     }
"   }
" }

I can see the EOF with the value -1 assigned to the var. 'numChar',
with the following Python:

" import popen2, sys
" 
" fromP, toP = popen2.popen2('<cmd>')
" char = '#'
" while 1:
"     for char in fromP.read(1):
"         sys.stdout.softspace=0
"         charOrd = ord(char)
"         print char,  charOrd
" 
" print
" print 'OK sortie de boucle'
" 

I don't get the EOF because my program hangs. I'd like to be
able to address the EOF character, and get rid of the hanging
of my program: what should I do ? How should I write my 
condition on the 'while 1:' line ? And is it possible to
trap the end of my stream just like in Java with this '-1'
value ??

Thanks a lot !
Regards,
Sp



More information about the Python-list mailing list