Anybody can help on this?
jeff at ccvcorp.com
Thu Feb 21 20:17:19 CET 2002
> Since I'm a newbie to python, I thought it must
> be possible to automate this process.
Yes, this is a great use for Python. :)
> I wrote this little script which
> does the job nicely:
> listit=os.popen('ls *pdb')
This would probably be better done as
pdbs = glob.glob('*pdb')
(This will build your file list with significantly less overhead.)
> The problem is how can I save the output to a file?
If you use the popen2() function, instead of popen(), you'll get two file
objects back, one of which is stdin and the other is stdout.
passin, passout = os.popen2('/home/chemistry/profit ')
Now, you can call
passin.write( 'your commands here' )
For getting output, you can take a couple of approaches. If you just need
to archive everything that is output by your program, a simple
outfile = open('myoutput.txt', 'w')
outfile.write( passout.read() )
should suffice. You can also read a single line of output at a time ( with
passout.readline() ), but be aware that this call won't return until there's
either something to read, or the pipe closes (i.e., your piped program
terminates), in which latter case it will return an empty string ( '' ).
More information about the Python-list