How to get full path to script?

Sebastian "lunar" Wiesner basti.wiesner at gmx.net
Mon Jun 9 13:42:30 EDT 2008


 Mike Driscoll <kyosohma at gmail.com> at Montag 09 Juni 2008 18:20:

> On Mon, Jun 9, 2008 at 11:07 AM, kj <socyl at 987jk.com.invalid> wrote:
>> In <mailman.228.1213022580.1044.python-list at python.org> "Mike Driscoll"
>> <kyosohma at gmail.com> writes:
>>
>>>For my compiled scripts, I usually use this variation:
>>
>>>path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0])))
>>
>> Thanks.  But why the os.path.join()?  (BTW, I did read the docs
>> before posting, but they make no sense to me; they say that
>> os.path.join joins "one or more path components intelligently",
>> but what does it mean to join *one* component?)
>>
>> Kynn
>>
>> --
>> NOTE: In my address everything before the first period is backwards;
>> and the last period, and everything after it, should be discarded.
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
> 
> The idea of the join method is to create the path in an OS agnostic
> fashion. Linux uses forward slashes and Windows uses backward slashes
> to join the parts. The join method does this for you so you don't have
> to.

I guess, you didn't get his point.  He seems to be aware that os.path.join
creates a path from _multiple_ strings by joining them with the correct
separator used by the underlying platform.

But he was asking why one would invoke os.path.join on a _single_ string, as
you did in your example.  I'm wondering about this, too.  It doesn't make
sense to me.  os.path.join doesn't convert existing separators to the
platform-specific ones.  And even if it would, sys.argv[0] already contains
a correct path, so there is nothing that needs conversion.  So why use it
with a _single_ argument?  I'd appreciate an example, illustrating the use
of this ;)


-- 
Freedom is always the freedom of dissenters.
                                      (Rosa Luxemburg)



More information about the Python-list mailing list