Nic*_*las 4 python operating-system
我尝试了如下代码,尝试将目录分隔符更改为正斜杠,/但仍然卡在反斜杠中\。文档说该函数使用 directory separator 连接路径os.sep,但这在我的情况下不起作用。
import os
os.sep = '/'
print(os.sep)
print(os.path.join('.', 'path'))
Run Code Online (Sandbox Code Playgroud)
我认为这回答了为什么 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
Run Code Online (Sandbox Code Playgroud)
请确保您使用pure的版本PosixPath和WindowsPath。如果您尝试WindowsPath在 Posix 系统上使用,您将收到以下错误:
NotImplementedError: cannot instantiate 'WindowsPath' on your system
Run Code Online (Sandbox Code Playgroud)
这也在文档中指定:
如果您想在 Unix 机器上操作 Windows 路径(反之亦然)。
WindowsPath在 Unix 上运行时不能实例化 a ,但可以实例化PureWindowsPath.
您可以查看不同操作系统的源代码。例如,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
Run Code Online (Sandbox Code Playgroud)
可以看到它是直接放入函数中的。它不依赖于os.sep. 每个 Python 安装都包含os.path适用于每个操作系统的功能。它们位于 Python 目录中的macpath.py、ntpath.py和下posixpath.py。如果您查看每个模块,您会发现该posixpath模块具有您想要的内容:
import posixpath
print(posixpath.join('.', 'path'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |