目前我不明白,为什么 pythonsos.path.dirname
像它那样行事。
假设我有以下脚本:
# Not part of the script, just for the current sample
__file__ = 'C:\\Python\\Test\\test.py'
然后我尝试获取以下目录的绝对路径:C:\\Python\\doc\\py
有了这个代码:
base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)) + '\\..\\doc\\py\\')
但为什么该方法os.path.dirname
不解析路径,并打印出(print (base_path)
:
C:\Python\Test\..\doc\py
我期望该方法能够解析以下路径:
C:\Python\Test\doc\py
我只知道 .NET Framework 的这种行为,获取目录路径将始终解析完整路径并删除目录更改..\\
。我在 Python 中有什么可以做到这一点?
调查os.path.normpath https://docs.python.org/2/library/os.path.html#os.path.normpath
通过折叠冗余分隔符和上层引用来标准化路径名,以便 A//B、A/B/、A/./B 和 A/foo/../B 全部变为 A/B。此字符串操作可能会更改包含符号链接的路径的含义。在 Windows 上,它将正斜杠转换为反斜杠。
原因os.path.dirname
它的工作方式是因为它不是很智能 - 它甚至适用于 URL!
os.path.dirname("http://www.google.com/test") # outputs http://www.google.com
它只是在最后一个斜线之后砍掉任何东西。它不会查看最后一个斜杠之前的任何内容,因此它不在乎您是否有/../
在那儿的某个地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)