Difference between Popen and open() for reading a file

MRAB python at mrabarnett.plus.com
Thu Apr 22 15:04:33 EDT 2010


J wrote:
> I was reading something from a code review a little while ago and saw
> something that's got my curiosity up...
> 
> Say I had a file, foo.txt that I wanted to read from, only one time
> and only read.
> 
> So what's the difference between this:
> 
> mylist = Popen(["cat","foo.txt"], stdout=PIPE).communicate()[0].splitlines()
> 
> and this:
> 
> f = open('foo.txt')
> mylist = f.readlines()
> f.close
> 
That last line should be:

     f.close()

> Is there a reason why you would not use subprocess.Popen for this,
> other than just not relying on external programs to perfrom the task?
> 
> what if that file only has one line in it, and that's all you're
> interested in, and the file is guaranteed to only have that one line
> it it?
> 
> For example:
> 
> say foo.txt contained only the number 123456789
> 
> what's wrong with doing this:
> 
> my_int = int(commands.getoutput('cat foo.txt')
> 
> or via the subprocess.Popen method mentioned above?

Why would you want to call an external program to do something when you
could do it directly? It seems like a strange thing to do, like driving
to your kitchen! :-)



More information about the Python-list mailing list