路径的“/”或“\”?

2024-05-14 11:14:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在与朋友共享文件时遇到此问题

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

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

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

提前谢谢


Tags: 文件path命令目录oslinuxwindowsmac
3条回答

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

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

使用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'

相关问题 更多 >

    热门问题