删除字符串中的最后一个路径组件

Bro*_*olf 43 python string

我有一条路:

myPath = "C:\Users\myFile.txt"
Run Code Online (Sandbox Code Playgroud)

我想删除结束路径,以便字符串只包含:

"C:\Users"
Run Code Online (Sandbox Code Playgroud)

到目前为止,我正在使用拆分,但它只是给了我一个列表,并且我坚持到这一点.

myPath = myPath.split(os.sep)
Run Code Online (Sandbox Code Playgroud)

Dan*_*uev 72

你不应该直接操纵路径,有os.path模块.

>>> import os.path
>>> print os.path.dirname("C:\Users\myFile.txt")
C:\Users
>>> print os.path.dirname(os.path.dirname("C:\Users\myFile.txt"))
C:\
Run Code Online (Sandbox Code Playgroud)

像这样.

  • 但这只有在路径不以"/"结尾时才有效 (4认同)
  • @Awsed为了确保这适用于以斜杠结尾的文件路径,我们可以使用 `os.path.dirname(os.path.normpath("a/b/c/"))`。 (2认同)

the*_*eye 21

你也可以os.path.split像这样使用

>>> import os
>>> os.path.split('product/bin/client')
('product/bin', 'client')
Run Code Online (Sandbox Code Playgroud)

它将路径分成两部分并在元组中返回它们.您可以在变量中指定值,然后像这样使用它们

>>> head, tail = os.path.split('product/bin/client')
>>> head
'product/bin'
>>> tail
'client'
Run Code Online (Sandbox Code Playgroud)


joh*_*ger 9

当前执行此操作的方法(Python > 3.4)是使用pathlib模块。

>>> import pathlib
>>> path = pathlib.Path(r"C:\Users\myFile.txt")
>>> path.parent
WindowsPath('C:/Users')   #if using a Windows OS

>>> print(path.parent)
C:\Users
Run Code Online (Sandbox Code Playgroud)

这具有跨平台的额外好处,因为它pathlib将使路径对象适合当前操作系统(我使用的是 Windows 10)