Python 使用pathlib,父';s parent只返回第一个父级本身(parent.parent==parent)
我正在尝试查找脚本所在目录的父目录:Python 使用pathlib,父';s parent只返回第一个父级本身(parent.parent==parent),python,python-3.x,pathlib,Python,Python 3.x,Pathlib,我正在尝试查找脚本所在目录的父目录: this = pathlib.Path(__name__) parent = this.parent parent2 = parent.parent 但是打印出来表明第二个.parent不起作用: print(this, this.absolute()) print(parent, parent.absolute()) print(parent2, parent2.absolute()) print(this.parent == this.parent.p
this = pathlib.Path(__name__)
parent = this.parent
parent2 = parent.parent
但是打印出来表明第二个.parent
不起作用:
print(this, this.absolute())
print(parent, parent.absolute())
print(parent2, parent2.absolute())
print(this.parent == this.parent.parent)
产生以下输出:
__main__ C:\Users\Markus\Projects\PathTest\bin\__main__
. C:\Users\Markus\Projects\PathTest\bin
. C:\Users\Markus\Projects\PathTest\bin
True
我不知道,会是什么问题?如打印输出所示:如果
parent='。
则parent。parent
也将是
尝试事先解决路径问题:
this = Path(__file__).resolve()
还要注意,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;非\uuuu main\uuu
如打印输出所示:如果parent='.
则parent.parent
也将是
尝试事先解决路径问题:
this = Path(__file__).resolve()
还要注意,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;使用this=Path(\uuuuu main\uuuuuu)
时,不使用\uuuuuu main\uuuuuuu,
一切正常。。。什么是Parent
?什么是print(\uuuuu name\uuuuuu)
?如果我在MacOS上运行你的代码,\uuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。在我的情况下,没有扩展到完整路径,但每个平台可能会有所不同。absolute
将把相对路径与当前工作目录连接起来。@9769953是的,运行print(\uu name\uuuuuuuu)
会给我\uuu main\uuuuuuuuuuu
,但我不明白为什么不能在上面运行两次.parent
,它非常了解absolute()
路径。您上次的编辑显示了问题:pathlib使用的是相对目录名,而不是绝对路径名。因此,它会在单曲上“卡住”。目录,并且绝对路径也保持不变。使用this=path(\uuuu main\uuu)
。。。什么是Parent
?什么是print(\uuuuu name\uuuuuu)
?如果我在MacOS上运行你的代码,\uuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。在我的情况下,没有扩展到完整路径,但每个平台可能会有所不同。absolute
将把相对路径与当前工作目录连接起来。@9769953是的,运行print(\uu name\uuuuuuuu)
会给我\uuu main\uuuuuuuuuuu
,但我不明白为什么不能在上面运行两次.parent
,它非常了解absolute()
路径。您上次的编辑显示了问题:pathlib使用的是相对目录名,而不是绝对路径名。因此,它会在单曲上“卡住”。目录,并且绝对路径也保持不变。好吧,我想我现在理解了这个问题,但是.resolve()
似乎没有任何作用,所有打印输出都保持不变。我这样做对吗<代码>this=pathlib.Path(_name__).resolve();打印(本);打印(this.parent.parent==this.parent)
它只输出:\uuuuu main\uuuuu
和True
\uuuu file\uuuuuu
而不是\uuu main\uuuu
是文件的路径。您是否有名为\uuuuu main\uuuu
的文件或目录?甚至可以尝试:Path(file.resolve(strict=True)
以确保该文件存在。我没有,我有一个包含上述3行的test.py
文件和import pathlib
,并且我正在获得打印(this)
的输出main\uu
,然后我建议您尝试:this=Path(\uu文件)。resolve(strict=True)
。再次说明:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu>而不是作为参数。好吧,我想我现在理解这个问题了,但是.resolve()
似乎什么都不做,所有的打印输出都是一样(this.parent.parent==this.parent)
它只输出:\uuuuuu main\uuuuu
和True
\uuuuu file\uuuuuuuuuu
而不是\uuuuuu main\uuuuuuuuuuu
是文件的路径。您是否有一个名为\uuuuuuu main\uuuuuuuuuuuu
的文件或目录?甚至可以尝试:路径(\uuuuuuuuuuuuuuuuuuuuu
以确保该文件存在。我没有,我有一个包含上述3行的test.py
文件和import pathlib
,我将获得打印(this)
的输出main\uuuuuuuuuuuuuu
,然后我建议您尝试:this=Path(\uuuuuu文件)。解析(strict=True)
。再次:\uuuuu文件
而不是\uuuuuu主
作为参数。