'/' 或 '\' 路径?

'/' or '\' for paths?

我在与朋友共享文件时遇到这个问题...

我有 windows,有些用 mac,有些用 Linux。当我共享 python 个包含创建目录命令的文件时,例如:

Path_Results = os.path.dirname(Path_Definition)+'\Results'

未创建目录,因为在 Windows 中使用了 \,而在 mac 和 linux 中使用了 /。 有什么想法可以创建更通用的脚本吗?

提前致谢

os.sep 就是为了这个目的而存在的。您也可以使用 os.path.join.

直接使用'/'或''不是个好主意。 @mrks 提到的路径分隔符是我们需要使用的。

使用pathlib.Path。那么你将不再关心 /\

在 Windows:

>>> from pathlib import Path
>>> updir = Path("..")
>>> resdir = updir / "Result"
>>> resdir
WindowsPath('../Result')
>>> str(resdir)
'..\Result'

在 Linux、Mac、BSD 和其他 *nix:

>>> from pathlib import Path
>>> updir = Path("..")
>>> resdir = updir / "Result"
>>> resdir
PosixPath('../Result')
>>> str(resdir)
'../Result'

几乎所有 stdlib 模块和函数都接受 Path,不需要 str()。示例:

from pathlib import Path
resdir = Path("../Result")
filepath = resdir / "somefilename.txt"
assert isinstance(filepath, Path)
with open(filepath, "rt") as fin:
    for ln in fin:
        # do things

如果有文件 ..\Result\somefilename.txt(在 Windows 中)或 ../Result/somefilename.txt(在 Linux/Mac/BSD 中),代码将完全相同。


编辑: 对于您的特定代码:

from pathlib import Path

...

# Assuming `Path_Definition` is not a Path object
Path_Results = Path(Path_Definition) / 'Results'