In Python 3.4 pathlib was introduced:
>>> from pathlib import Path >>> p = Path('/etc/usr/lib') >>> p PosixPath('/etc/usr/lib') >>> p.parent PosixPath('/etc/usr')
It also comes with many other helpful features e.g. for joining paths using slashes or easily walking the directory tree.
import os os.chdir('..')
Combine Kim's answer with os:
Obviously that os.chdir('..') is the right answer here. But just FYI, if in the future you come across situation when you have to extensively manipulate directories and paths, here is a great package (Unipath) which lets you treat them as Python objects: https://pypi.python.org/pypi/Unipath
so that you could do something like this:
>>> from unipath import Path >>> p = Path("/usr/lib/python2.5/gopherlib.py") >>> p.parent Path("/usr/lib/python2.5") >>> p.name Path("gopherlib.py") >>> p.ext '.py'
Well.. I'm not sure how portable os.chdir('..') would actually be. Under Unix those are real filenames. I would prefer the following:
import os os.chdir(os.path.dirname(os.getcwd()))
That gets the current working directory, steps up one directory, and then changes to that directory.
Although this is not exactly what OP meant as this is not super simple, however, when running scripts from Notepad++ the
os.getcwd() method doesn't work as expected. This is what I would do:
import os # get real current directory (determined by the file location) curDir, _ = os.path.split(os.path.abspath(__file__)) print(curDir) # print current directory
Define a function like this:
def dir_up(path,n): # here 'path' is your path, 'n' is number of dirs up you want to go for _ in range(n): path = dir_up(path.rpartition("\\"), 0) # second argument equal '0' ensures that # the function iterates proper number of times return(path)
The use of this function is fairly simple - all you need is your path and number of directories up.
print(dir_up(curDir,3)) # print 3 directories above the current one
The only minus is that it doesn't stop on drive letter, it just will show you empty string.