为什么 `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()
使用 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()