我有以下我认为不正确的代码行:
path_dir = os.path.abspath(os.path.join(os.path.dirname(__file__)))
os.path.dirname(__file__)
在其中查找脚本。
我知道os.path.abspath()
为您提供了文件或目录的绝对路径,但是os.path.join()
将两个字符串组合在一起,但为此我们需要两个路径。即path_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)))
我是否认为上述代码不正确且已损坏?
答案 0 :(得分:2)
os.path.join()
调用完全是多余的,可以安全地删除。您在这里不需要它。但是,这不是技术上的错误或损坏。
os.path.join()
接受任意数量的参数(至少1个)连接在一起,因此,从技术上讲,它只允许传递os.path.dirname(__file__)
的结果,{ {1}}只能返回该单个输入。
这可能是代码重构或半理解的复制粘贴操作的产物,此后已删除了更多参数。
os.path.join()
在使用os.path.join()
语法传递其他路径的情况下接受单个参数,但是这些附加路径根据运行时条件为空:
*args
答案 1 :(得分:0)
os.path.join(路径,*路径) 连接一个或多个路径组件 聪明地返回值是path和任何其他对象的串联 *路径的成员,其中只有一个目录分隔符(os.sep) 在每个非空部分之后(最后一个除外),表示结果 如果最后一部分为空,则只会以分隔符结尾。如果一个组件 是绝对路径,所有先前的组件都被丢弃, 连接将从绝对路径组件继续。