Finding Script Directory

Steve Holden sholden at holdenweb.com
Wed Jul 7 10:17:07 EDT 2004


Peter Hansen wrote:

> Fuzzyman wrote:
> 
>> What's the best, cross platform, way of finding out the directory a
>> script is run from ?
>>
>> I've googled a bit, but can't get a clear answer.
> 
> 
> I've seen twenty threads on this and I still don't know/recall
> whether there's a clear answer. :-(
> 
>> On sys.argv[0] the docs say :
>> argv[0] is the script name (it is operating system dependent whether
>> this is a full pathname or not).
>>
>> So this doesn't seem to be the answer.
> 
> 
> Actually, it's all you've got to work with.  On Linux and Windows,
> at least, it's got either just the script name, if you're running
> from the current directory, or a path (relative or absolute) to
> the directory where the script is run from.  It's like this whether
> py2exe'd or not, too.
> 
> __file__ could be of assistance, but it doesn't exist when
> you've py2exe the thing...
> 
>> The script directory is always *somewhere* in sys.path - but not
>> always in position 0. If you use py2exe then sys.path[0] is the
>> zipfile it does the imports from !!
> 
> 
> Yeah, sys.path isn't much good for this sort of thing.
> 
> -Peter

Oh, come now, Peter, you've seen this problem solved more times than you 
can shake a stick at. The required code is

     import os.path, sys
     print os.path.abspath(sys.argv[0])

How hard can that be to remember? Didn't realise you were getting so OLD 
  ;-) ...

regards
  STeve



More information about the Python-list mailing list