为什么 `os.listdir` 不接受带“~”的路径?

Why does `os.listdir` does not accept a path with "~"?

使用 python 时,如果您说:

dd="~/this/path/do/exist/"

你也是

os.listdir(dd)

你得到

FileNotFoundError: [Errno2] no such file or directory '~/this/path/do/exist/'

即使路径存在。

为什么会这样,如何纠正?


此外,如果您使用 argparse 传递带有 ~ 的路径,它会转换为完整路径,并且不会发生此问题。

~ 由 shell 解释,这就是当您通过 argparse 在命令行上使用它时它起作用的原因。

使用os.path.expanduser计算~

import os
os.path.expanduser("~/this/path/do/exist/")

如果您使用pathlib.Path,您可以使用Path.expanduser()

from pathlib import Path
Path("~/this/path/do/exist/").expanduser()