What are the good ways to define a path in a multi-OS compatible Python script

advertisements

When writing a Python script that can be executed in different operating system environments (Windows/*nix), what are some good ways to set a path? In the example below I would like to have the logfiles stored in the logs folder under the current directory. Is this an acceptable approach (I'm rather new to Python) or are there better ways to achieve this? Thanks

if os.name == 'nt':
    logdir=('%s\\logs\\') % (os.getcwd())
else:
    logdir=('%s/logs/') % (os.getcwd())

logging.basicConfig(level=logging.INFO,
    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
    datefmt='%m-%d-%y %H:%M:%S',
    filename='%slogfile.log' % (logdir),
    filemode='a')


Definitely have a look at os.path. It contains many of the "safe" cross-OS path manipulation functions you need. For example, I've always done this in the scenario you're outlining:

os.path.join(os.path.abspath(os.path.dirname(__file__)), 'logs')

Also note that if you want to get the path separator, you can use:

os.path.sep

This will yield '\\' on Windows, and '/' on Linux, for example.