Python 为什么要将os.path.join用于相对路径?

Python 为什么要将os.path.join用于相对路径?,python,Python,我有一个项目,它有几个目录:项目、设置、资源。打开这些目录中的文件的最佳做法是什么 现在我正在做: 用openf'./Projects/{project_name}/project.txt',r'作为f: ... 我见过很多人推荐这样的东西: projects\u path=os.path.abspaths.path.dirname\u文件__ project_path=os.path.joinprojects_path,f'{project_name}/project.txt' 使用openp

我有一个项目,它有几个目录:项目、设置、资源。打开这些目录中的文件的最佳做法是什么

现在我正在做:

用openf'./Projects/{project_name}/project.txt',r'作为f: ... 我见过很多人推荐这样的东西:

projects\u path=os.path.abspaths.path.dirname\u文件__ project_path=os.path.joinprojects_path,f'{project_name}/project.txt' 使用openproject_路径,“r”作为f: ...
使用第二种方法比第一种方法有什么好处?最佳做法是什么?

大多数人建议这样做的唯一原因是,如果您使用相同的根文件夹(即项目路径)访问大量文件,那么您不必每次都键入它。后者是最佳做法。

大多数人建议这样做的唯一原因是,如果您使用相同的根文件夹(即项目路径)访问大量文件,那么您不必每次都键入它。后者是最佳实践。

第二个片段应该是

os.path.join(projects_path, project_name, ‘projects.txt’)
有什么好处?便携性。您的代码可以更容易地在不同的操作系统上运行,因为windows路径与*nix路径完全不同,但此代码段仍然可以在这两个操作系统上运行

这取决于您是否需要真正跨平台的代码

此外,绝对路径允许您的代码工作,无论它安装在何处或运行在何处。当前工作目录可能没有“Projects”文件夹,因为它是作为存在于某些/usr/local/bin文件夹中的shell脚本执行的


一般来说,硬编码任何相对路径都会产生脆弱的代码,因为现在您需要像“这需要安装在特定目录中”这样的指令。健壮的代码总是比脆弱的代码好

第二个片段应该是

os.path.join(projects_path, project_name, ‘projects.txt’)
有什么好处?便携性。您的代码可以更容易地在不同的操作系统上运行,因为windows路径与*nix路径完全不同,但此代码段仍然可以在这两个操作系统上运行

这取决于您是否需要真正跨平台的代码

此外,绝对路径允许您的代码工作,无论它安装在何处或运行在何处。当前工作目录可能没有“Projects”文件夹,因为它是作为存在于某些/usr/local/bin文件夹中的shell脚本执行的

一般来说,硬编码任何相对路径都会产生脆弱的代码,因为现在您需要像“这需要安装在特定目录中”这样的指令。健壮的代码总是比脆弱的代码好

os.path.join将从操作系统之间的差异中抽象出来

使用os.path.*您可以运行代码,而不用担心操作系统。

os.path.join将您从操作系统之间的差异中抽象出来


使用os.path.*您可以运行代码而不必担心操作系统。

第一种方法依赖于python进程的运行时工作目录。如果python进程从不同的位置运行,./Projects的绝对路径将改变。使用_文件_的第二种方法与进程的起始位置无关。第一种方法依赖于python进程的运行时工作目录。如果python进程从不同的位置运行,./Projects的绝对路径将改变。第二种使用_文件_的方法对于进程的起始位置是不变的。当然,还有更多的原因。例如,不必担心重复分离器是非常方便的。不,肯定有更多的原因。例如,不必担心重复分离器是非常方便的。