Unknown wrote:
On 2009-01-16, Michael Hoffman <9qobl2...@sneakemail.com> wrote:
Is there a portable way to find the full path of a filename that would be called by os.execvp()?

Yes.  Use os.path.abspath() on the name before you call it with
os.execvp()

That doesn't work:

Python 2.5.2 (r252:60911, Sep 23 2008, 19:04:15)
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.abspath("echo")
'/net/noble/vol2/home/mmh1/echo'
>>> os.execvp(os.path.abspath("echo"), ["echo", "spam"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
File "/net/noble/vol2/home/mmh1/arch/Linux-i386/opt/python-2.5.2/lib/python2.5/os.py", line 353, in execvp
    _execvpe(file, args)
File "/net/noble/vol2/home/mmh1/arch/Linux-i386/opt/python-2.5.2/lib/python2.5/os.py", line 377, in _execvpe
    func(file, *argrest)
OSError: [Errno 2] No such file or directory
>>> os.execvp("echo", ["echo", "spam"])
spam

The correct answer would be "/bin/echo" but abspath("echo") is just going to give me <cwd>/echo. I need something that will search through the PATH like execvp() would. I can do it myself, but I'm surprised that such a feature is not already readily available somewhere.

Michael

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to