与朋友共享文件时遇到此问题...
我有windows,有些使用mac,有些使用Linux。当我共享包含创建目录命令的 python 文件时,例如:
Path_Results = os.path.dirname(Path_Definition)+'\Results'
该目录未创建,因为在 Windows 中使用了 \,而在 mac 和 linux 中使用了 /。任何想法如何创建更通用的脚本?
提前致谢
使用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'
os.sep存在就是为了这个目的。您也可以使用os.path.join.
直接使用 '/' 或 '' 不是一个好主意。@mrks 提到的路径分隔符是我们需要使用的。