'/' 或 '\' 路径?
'/' 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'
我在与朋友共享文件时遇到这个问题...
我有 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'