python-3.x 如何将一个字符串附加到路径上?

watbbzwu  于 2023-10-21  发布在  Python
关注(0)|答案(2)|浏览(125)

下面的代码:

from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Desktop + "/subdir"

获取以下错误:

---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call last)
    <ipython-input-4-eb31bbeb869b> in <module>()
             1 from pathlib import Path
             2 Desktop = Path('Desktop')
       ----> 3 SubDeskTop = Desktop+"/subdir"

     TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'

很明显我在做些见不得人的事,但这也引出了一个问题:如何访问Path对象的目录?

gg0vcinb

gg0vcinb1#

  • 扩展pathlib对象的正确运算符是/
from pathlib import Path

Desktop = Path('Desktop')

# print(Desktop)
WindowsPath('Desktop')

# extend the path to include subdir
SubDeskTop = Desktop / "subdir"

# print(SubDeskTop)
WindowsPath('Desktop/subdir')

# passing an absolute path has different behavior
SubDeskTop = Path('Desktop') / '/subdir'

# print(SubDeskTop)
WindowsPath('/subdir')
  • 当给定几个绝对路径时,最后一个被用作锚(模仿os.path.join()的行为):
>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')

>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')
  • 在Windows路径中,更改本地根目录不会放弃以前的驱动器设置:
>>> PureWindowsPath('c:/Windows', '/Program Files')
PureWindowsPath('c:/Program Files')
  • 有关给出绝对路径(如Path('/subdir'))的其他详细信息,请参阅文档。

参考资料:

vfwfrxfs

vfwfrxfs2#

你要找的是:

from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Path.joinpath(Desktop, "subdir")

joinpath()函数将第二个参数附加到第一个参数,并为您添加'/'。

小心SubDeskTop = Path.joinpath(Desktop, "/subdir")不会工作。subdir前的斜线会破坏它。(来自Patrik的评论)。

相关问题