2024-05-14 11:14:42 发布
网友
我在与朋友共享文件时遇到此问题
我有windows,有些使用mac,有些使用Linux。当我共享包含创建目录命令的python文件时,例如:
Path_Results = os.path.dirname(Path_Definition)+'\Results'
未创建目录,因为在Windows\中使用,而在mac和linux/中使用。 有什么想法吗?我如何创建一个更通用的脚本
提前谢谢
直接使用“/”或“”不是个好主意。@mrks提到的路径分隔符是我们需要使用的
os.sep就是为了这个目的而存在的。您也可以使用os.path.join
os.sep
os.path.join
使用pathlib.Path。然后你就不会再为/或\担心了
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()。例如:
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中),代码将完全相同
..\Result\somefilename.txt
../Result/somefilename.txt
编辑:针对您的特定代码:
from pathlib import Path ... # Assuming `Path_Definition` is not a Path object Path_Results = Path(Path_Definition) / 'Results'
直接使用“/”或“”不是个好主意。@mrks提到的路径分隔符是我们需要使用的
os.sep
就是为了这个目的而存在的。您也可以使用os.path.join
使用
pathlib.Path
。然后你就不会再为/
或\
担心了在Windows上:
在Linux、Mac、BSD和其他*nix上:
几乎所有stdlib模块和函数都按原样接受
Path
,无需str()
。例如:如果有一个文件
..\Result\somefilename.txt
(在Windows中)或../Result/somefilename.txt
(在Linux/Mac/BSD中),代码将完全相同编辑:针对您的特定代码:
相关问题 更多 >
编程相关推荐