How do you conver output of "popen('ls')" to a list?
grante at visi.com
Thu Feb 21 03:56:18 CET 2002
In article <mailman.1014253235.29718.python-list at python.org>, Neil Schemenauer wrote:
> husam wrote:
>> os.listdir('.') gets you all the files in the '.' dircetory. This want
>> work if i want to process some selected files. In contrast to this,
>> "os.popen() allows you to pass arguments like "ls *txt" to retrieve only
>> *.txt files.
> Sorry, that's still not a good argument for two forks and god knows how
> any system calls. Try this:
> import glob
> txt_files = glob.glob("*txt")
In these days of 1.whatever GHz processors, I doubt that a
couple fork/exec combinations matters a lot in most situations.
But, os.system() calls the shell. The shell does god-knows-what
to the arguments, then looks god-knows-where for the
executable. You can lessen these problems by specifying an
absolute path and quoting the arguments -- though quoting them
properly isn't a trivial problem.
Don't even ask what happens when the wrong shell gets chosen to
start with. :)
Maybe I'm a bit too paranoid, but using os.system() seems to me
to be begging for problems down the road. If you explicitly
want shell-command-line semantics then it's cool, but most of
the places I see it used (including in my code) there are more
Modules to look in when you're tempted to do an os.system():
If all else fails, os.spawn or os.popen2 are often better
choices than os.system.
I'm done preaching now...
Grant Edwards grante Yow! Gibble, Gobble, we
at ACCEPT YOU...
More information about the Python-list