解决Python中的符号链接而不会丢失缺少的组件(例如" readlink -m")

时间:2018-05-08 15:03:49

标签: python

GNU readlink支持类似于:

的命令行调用
readlink -m /some/path/which/may/contain/symlinks

...将路径作为参数,并返回包含任何符号链接的路径(只要可以这样做),通过替换这些链接元素使用他们所指的"真实" /绝对路径。 readlink -freadlink -e不同,当任何路径元素不存在时,这会容忍(无故障地继续)。

Python中是否有可用的等效操作?

1 个答案:

答案 0 :(得分:2)

os.path.realpath()这样做。

$ rm -rf -- /tmp/nonexisting.XYZ     # just to be extra clear
$ orig_path=/tmp/nonexisting.XYZ/foo # on MacOS, where /tmp is at /private/tmp
$ greadlink -m "$orig_path"          # demonstrate GNU readlink output for comparison...
/private/tmp/nonexisting.XYZ/foo
$ python -c 'import os.path, sys; print(os.path.realpath(sys.argv[1]))' "$orig_path"
/private/tmp/nonexisting.XYZ/foo