I have several scripts that take as input a directory name, and my program creates files in those directories. Sometimes I want to take the basename of a directory given to the
To deal with your "trailing slash" issue (and other issues!), sanitise user input with os.path.normpath().
To build paths, use os.path.join()
to build the paths without writing slashes it is better to use:
os.path.join(dir, subdir, file)
if you want to add separators or get the separator independly of the os, then use
os.sep
Manually building up paths is a bad idea for portability; it will break on Windows. You should use os.path.sep.
As for your first question, using os.path.join is the right idea.
Use os.path.join() to build up paths. For example:
>>> import os.path
>>> path = 'foo/bar'
>>> os.path.join(path, 'filename')
'foo/bar/filename'
>>> path = 'foo/bar/'
>>> os.path.join(path, 'filename')
'foo/bar/filename'
You should use os.path.join() to add paths together.
use
os.path.dirname(os.path.join(output_dir,''))
to extract dirname, while adding a trailing slash if it was omitted.