如何从pathlib.path获取给定文件所在的文件夹名称?

tra*_*set 33 python filenames pathlib

是否有类似的东西os.path.dirname(path),但在pathlib?

lar*_*sks 55

看起来有一个parents元素包含给定路径的所有父目录.例如,如果您从以下开始:

>>> import pathlib
>>> p = pathlib.Path('/path/to/my/file')
Run Code Online (Sandbox Code Playgroud)

那么p.parents[0]该目录包含file:

>>> p.parents[0]
PosixPath('/path/to/my')
Run Code Online (Sandbox Code Playgroud)

... p.parents[1]并将成为下一个目录:

>>> p.parents[1]
PosixPath('/path/to')
Run Code Online (Sandbox Code Playgroud)

等等.

p.parent是另一种要求的方式p.parents[0].您可以将a Path转换为字符串并获得您期望的内容:

>>> str(p.parent)
'/path/to/my'
Run Code Online (Sandbox Code Playgroud)

而且在任何Path你可以使用该.absolute()方法获得绝对路径:

>>> os.chdir('/etc')
>>> p = pathlib.Path('../relative/path')
>>> str(p.parent)
'../relative'
>>> str(p.parent.absolute())
'/etc/../relative'
Run Code Online (Sandbox Code Playgroud)

  • 使用 ```p.parent.name``` 获取父目录的名称,无需完整路径 (8认同)
  • @OliverOliver `p.parents[0]`,带有`s`。 (5认同)
  • 我会添加选项“p.parent.resolve()”来获取解析的绝对路径。 (2认同)

yua*_*nzz 10

概括

from pathlib import Path
file_path = Path("/Users/yuanz/PycharmProjects/workenv/little_code/code09/sample.csv")

Run Code Online (Sandbox Code Playgroud)

1.获取dir路径

file_path.parent
# >>> /Users/yuanz/PycharmProjects/workenv/little_code/code09
Run Code Online (Sandbox Code Playgroud)

2. 获取文件名

file_path.name
# >>> sample.csv
Run Code Online (Sandbox Code Playgroud)

3.获取文件类型

file_path.suffix

# >>> .csv
Run Code Online (Sandbox Code Playgroud)

4.在此目录路径中添加新文件

file_path.parent.joinpath("dd.png")
Run Code Online (Sandbox Code Playgroud)