在Python中向上移动一个目录

时间:2013-07-26 15:37:37

标签: python directory

有一种简单的方法可以使用一行代码在python中移动一个目录吗?与命令行中的cd ..类似的东西

7 个答案:

答案 0 :(得分:43)

>>> import os
>>> print os.path.abspath(os.curdir)
C:\Python27
>>> os.chdir("..")
>>> print os.path.abspath(os.curdir)
C:\

答案 1 :(得分:27)

使用os模块:

import os
os.chdir('..')

应该有效

答案 2 :(得分:13)

显然os.chdir('..')在这里是正确的答案。但只是仅供参考,如果将来你遇到需要广泛操作目录和路径的情况,这里有一个很好的包(Unipath),可以让你把它们当作Python对象:https://pypi.python.org/pypi/Unipath

这样你可以这样做:

>>> 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'

答案 3 :(得分:11)

嗯..我不确定os.chdir('..')实际上是多么便携。在Unix下,这些是真正的文件名。我更喜欢以下内容:

import os
os.chdir(os.path.dirname(os.getcwd()))

获取当前工作目录,升级一个目录,然后更改到该目录。

答案 4 :(得分:4)

在Python 3.4中引入了 pathlib

>>> from pathlib import Path
>>> p = Path('/etc/usr/lib')
>>> p
PosixPath('/etc/usr/lib')
>>> p.parent
PosixPath('/etc/usr')

它还附带许多其他有用的功能,例如使用斜杠连接路径或轻松浏览目录树。

有关更多信息,请参阅docsthis post,其中介绍了os.path和pathlib之间的区别。

答案 5 :(得分:0)

虽然这并不完全是OP的意思,因为这并不简单,但是从Notepad ++运行脚本时,os.getcwd()方法无法按预期工作。这就是我要做的:

import os

# get real current directory (determined by the file location)
curDir, _ = os.path.split(os.path.abspath(__file__))

print(curDir) # print current directory

定义如下函数:

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], 0) # second argument equal '0' ensures that 
                                                        # the function iterates proper number of times
    return(path)

此功能的使用非常简单-您所需要的只是路径和目录数。

print(dir_up(curDir,3)) # print 3 directories above the current one

唯一的缺点是它不会在驱动器号上停下来,只会向您显示空字符串。

答案 6 :(得分:0)

用os组合Kim的答案:

p=Path(os.getcwd())
os.chdir(p.parent)