我尝试了如下代码,尝试更改目录分隔符以转发斜杠/
,但仍然停留在反斜杠\
中。文档说该函数使用目录分隔符os.sep
连接路径,但这在我的情况下不起作用。
import os
os.sep = '/'
print(os.sep)
print(os.path.join('.', 'path'))
答案 0 :(得分:3)
我认为this回答了Python使用特定分隔符的问题。
也就是说,您可以使用Pathlib
模块构建路径并指定是否需要Posix或Windows路径。
示例:
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
确保使用pure
版PosixPath
和WindowsPath
。如果您尝试在Posix系统上使用WindowsPath
,则会收到以下错误:
NotImplementedError: cannot instantiate 'WindowsPath' on your system
这也在docs:
中指定如果要在Unix计算机上操作Windows路径(反之亦然)。在Unix上运行时无法实例化
WindowsPath
,但可以实例化PureWindowsPath
。
答案 1 :(得分:1)
您可以查看不同操作系统的源代码。例如,Mac版本是:
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.py
,ntpath.py
和posixpath.py
下的Python目录中。如果你看一下,你会注意到posixpath
模块有你想要的东西:
import posixpath
print(posixpath.join('.', 'path'))
答案 2 :(得分:0)
你可以用自己的方式替换os.path中的函数:
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) )
输出:
Initial unmodified join return: '.\public\INSTALL\'
Modified join return: './public/INSTALL/'