首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中,如何在os.path.join()函数中指定目录分隔符?

在Python中,如何在os.path.join()函数中指定目录分隔符?
EN

Stack Overflow用户
提问于 2016-07-31 10:09:33
回答 4查看 2.1K关注 0票数 4

我尝试了下面的代码,试图将目录分隔符更改为正斜杠/,但仍然停留在反斜杠\中。文档中说该函数使用目录分隔符os.sep连接路径,但这在我的例子中不起作用。

代码语言:javascript
运行
复制
import os
os.sep = '/'
print(os.sep)
print(os.path.join('.', 'path'))
EN

回答 4

Stack Overflow用户

发布于 2016-07-31 10:22:42

我认为this回答了为什么Python使用特定分隔符的问题。

也就是说,您可以使用Pathlib模块构造路径,并指定您想要的是Posix还是Windows。

示例:

代码语言:javascript
运行
复制
from pathlib import PurePosixPath, PureWindowsPath

print(PurePosixPath('some', 'silly', 'long', 'path'))
>> some/silly/long/path

print(PureWindowsPath('some', 'silly', 'long', 'path'))
>> some\silly\long\path

确保使用PosixPathWindowsPathpure版本。如果您试图在Posix系统上使用WindowsPath,您将得到以下错误:

代码语言:javascript
运行
复制
NotImplementedError: cannot instantiate 'WindowsPath' on your system

这也是在docs中指定的

如果您想要在Unix计算机上操作Windows路径(反之亦然),请使用

。在Unix上运行时不能实例化WindowsPath,但可以实例化PureWindowsPath

票数 6
EN

Stack Overflow用户

发布于 2016-07-31 10:17:42

您可以查看不同操作系统的源代码。例如,Mac版本为:

代码语言:javascript
运行
复制
def join(s, *p):
    path = s 
    for t in p:
        if (not s) or isabs(t):
            path = t 
            continue
        if t[:1] == ':':
            t = t[1:]
        if ':' not in path:
            path = ':' + path
        if path[-1:] != ':':
            path = path + ':' 
        path = path + t 
    return path

您可以看到它被直接放入函数中。它不依赖于os.sep。每个Python安装都包含每个操作系统的os.path函数。它们位于macpath.pyntpath.pyposixpath.py下的Python目录中。如果您查看每个模块,您将注意到posixpath模块具有您想要的内容:

代码语言:javascript
运行
复制
import posixpath

print(posixpath.join('.', 'path'))
票数 1
EN

Stack Overflow用户

发布于 2016-07-31 11:38:37

你可以用自己的函数替换os.path中的函数:

代码语言:javascript
运行
复制
import os
path = "public\\INSTALL\\"
print("Initial unmodified join return: '%s'" % os.path.join('.', path) )
native_os_path_join = os.path.join
def modified_join(*args, **kwargs):
    return native_os_path_join(*args, **kwargs).replace('\\', '/')
os.path.join = modified_join
print("Modified join return: '%s'" % os.path.join('.', path) )

输出:

代码语言:javascript
运行
复制
Initial unmodified join return: '.\public\INSTALL\'
Modified join return: './public/INSTALL/'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38680155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档