我尝试了下面的代码,试图将目录分隔符更改为正斜杠/
,但仍然停留在反斜杠\
中。文档中说该函数使用目录分隔符os.sep
连接路径,但这在我的例子中不起作用。
import os
os.sep = '/'
print(os.sep)
print(os.path.join('.', 'path'))
发布于 2016-07-31 10:22:42
我认为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
确保使用PosixPath
和WindowsPath
的pure
版本。如果您试图在Posix系统上使用WindowsPath
,您将得到以下错误:
NotImplementedError: cannot instantiate 'WindowsPath' on your system
这也是在docs中指定的
如果您想要在Unix计算机上操作Windows路径(反之亦然),请使用
。在Unix上运行时不能实例化
WindowsPath
,但可以实例化PureWindowsPath
。
发布于 2016-07-31 10:17:42
您可以查看不同操作系统的源代码。例如,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'))
发布于 2016-07-31 11:38:37
你可以用自己的函数替换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/'
https://stackoverflow.com/questions/38680155
复制相似问题