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.