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:


> 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