53

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

4

8 回答 8

95
>>> import os
>>> print os.path.abspath(os.curdir)
C:\Python27
>>> os.chdir("..")
>>> print os.path.abspath(os.curdir)
C:\
于 2013-07-26T15:39:55.937 回答
42

使用os.chdir应该工作:

import os
os.chdir('..')
于 2013-07-26T15:39:30.580 回答
15

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

这样你就可以做这样的事情:

>>> 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'
于 2013-07-26T15:47:39.993 回答
13

好吧..我不确定 os.chdir('..') 的便携性如何。在 Unix 下,这些是真实的文件名。我更喜欢以下内容:

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

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

于 2013-07-26T16:13:26.037 回答
13

在 Python 3.4中引入了pathlib

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

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

有关更多信息,请参阅文档此博客文章,其中涵盖了 os.path 和 pathlib 之间的区别。

于 2017-01-14T16:55:14.177 回答
1

虽然这并不是 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

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

于 2020-02-10T10:48:15.507 回答
0

将 Kim 的答案与 os 结合起来:

p=Path(os.getcwd())
os.chdir(p.parent)
于 2020-10-09T05:14:26.333 回答
0

向上移动多个目录的一种方便方法是pathlib

from pathlib import Path
    
full_path = "C:\Program Files\Python37\lib\pathlib.py"
print(Path(full_path).parents[0])
print(Path(full_path).parents[1])
print(Path(full_path).parents[2])
print(Path(full_path).parents[3])

print([str(Path(full_path).parents[i]) for i in range(4)])

输出:

C:\Program Files\Python37\lib
C:\Program Files\Python37
C:\Program Files
C:\

['C:\\Program Files\\Python37\\lib', 'C:\\Program Files\\Python37', 'C:\\Program Files', 'C:\\']
于 2021-12-01T09:59:13.747 回答