【问题标题】:Using os.path for POSIX Path Operations on Windows在 Windows 上使用 os.path 进行 POSIX 路径操作
【发布时间】:2016-08-04 04:24:54
【问题描述】:

我在 Windows 上使用 Paramiko 访问远程 SFTP 服务器。我需要对os.path.joinos.path.commonprefix 等远程路径进行一些处理。由于我的主机平台是 Windows,所有路径操作都带有\ 分隔符,但我需要 POSIX 样式的路径。

有没有办法在Windows上使用Python内置的POSIX路径操作?

【问题讨论】:

    标签: python windows path posix


    【解决方案1】:

    在我看来,pathlib.PurePosixPath 是正确的选择(phoenix 已经评论过)。

    例如:

    >>> import pathlib
    >>> pathlib.PurePosixPath('a', 'b')
    PurePosixPath('a/b')
    >>> str(pathlib.PurePosixPath('a', 'b'))
    'a/b'
    

    来自相关文档:

    class pathlib.PurePosixPath(*pathsegments)

    PurePath 的子类,这种路径风格代表非 Windows 文件系统路径:

    >>> PurePosixPath('/etc')
    PurePosixPath('/etc')
    

    pathsegments 的指定与 PurePath 类似。

    class pathlib.PureWindowsPath(*pathsegments)

    PurePath 的子类,这种路径风格代表 Windows 文件系统路径:

    >>> PureWindowsPath('c:/Program Files/')
    PureWindowsPath('c:/Program Files')
    

    pathsegments 的指定与 PurePath 类似。

    无论您在哪个系统上运行,您都可以实例化所有 这些类,因为它们不提供任何系统操作 来电。

    【讨论】:

      【解决方案2】:

      正如documentation 中指出的那样(第二条注释)

      ...如果您愿意,您还可以导入和使用各个模块 以不同格式之一操作始终的路径。他们 都有相同的界面:

      • posixpath 用于 UNIX 样式的路径
      • ntpath 用于 Windows 路径

      因此您可以导入posixpath 并将其用作os.path

      >>> import posixpath
      >>> posixpath.join
      <function join at 0x025C4170>
      >>> posixpath.join('a','b')
      'a/b'
      >>> posixpath.commonprefix
      <function commonprefix at 0x00578030>
      

      【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 2019-11-14
      • 2019-06-11
      相关资源
      最近更新 更多