用户输入路径,因此在Unix中,他/她可以输入~/../../~
。我希望Python将其转换为一个绝对路径。如何做到这一点?os.path.expanduser()
只能扩展第一个~
,而不能扩展后面的~
所以你只会得到os.path.expanduser(~/../../~)
=/Users/somebody/../../~
感谢
这就是波浪形展开的工作原理。即使是外壳也不会扩展第二个~
;波浪形扩展只发生在路径的前面。请参阅POSIX规范或bash手册。
os.path.expanduser
是好的。
请参阅user2357112的答案;他们决没有错。然而,如果你真的坚持这样做:
import os
path = '~/foo/bar/~'
home_path = os.path.expanduser('~')
path = path.replace("~", home_path.lstrip('/')