python – 如果path是符号链接到另一个路径
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如果path是符号链接到另一个路径,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1199字,纯文字阅读大概需要2分钟。
内容图文
有没有办法在Python中检查文件是否是另一个特定文件的符号链接?例如,如果/ home / user / x符号链接到/ home / user / z,但/ home / user / y链接到其他地方:
>>>print(isLink("/home/user/x", "/home/user/z"))
True
>>>print(isLink("/home/user/y", "/home/user/z"))
False
>>>print(isLink("/home/user/z", "/home/user/z"))
False
(/ home / user / z是原始文件,而不是符号链接)
解决方法:
import os
def isLink(a, b):
return os.path.islink(a) and os.path.realpath(a) == os.path.realpath(b)
请注意,这会将第二个参数解析为实际路径.因此,如果a和b都是符号链接,它将返回True,只要它们都指向相同的真实路径.如果您不希望b被解析为真实路径,那么请更改
os.path.realpath(a) == os.path.realpath(b)
至
os.path.realpath(a) == os.path.abspath(b)
现在,如果指向b,并且b指向c,并且您希望isLink(a,b)仍为True,那么您将需要使用os.readlink(a)而不是os.path.realpath(a) :
def isLink(a, b):
return os.path.islink(a) and os.path.abspath(os.readlink(a)) == os.path.abspath(b)
os.readlink(a)求值为b,指向的下一个链接,而os.path.realpath(a)求值为c,指向的最终路径.
例如,
In [129]: !touch z
In [130]: !ln -s z x
In [131]: !touch w
In [132]: !ln -s w y
In [138]: isLink('x', 'z')
Out[138]: True
In [139]: isLink('y', 'z')
Out[139]: False
In [140]: isLink('z', 'z')
Out[140]: False
内容总结
以上是互联网集市为您收集整理的python – 如果path是符号链接到另一个路径全部内容,希望文章能够帮你解决python – 如果path是符号链接到另一个路径所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。