Un script qui crée un chemin absolu lorsqu'un répertoire est spécifié avec un lien symbolique au milieu du chemin.
followlnk.py
#!/usr/bin/env python
import os
import sys
import os.path
def follow_link(path):
path = os.path.abspath(path)
path_fragments = []
current = ""
while True:
path, child = os.path.split(path)
if child == '':
current = path # /
break
path_fragments.insert(0, child)
while path_fragments:
current = follow_child(current, path_fragments[0])
path_fragments = path_fragments[1:]
print(current)
def follow_child(current, child):
result = os.path.join(current, child)
if not os.path.islink(result):
return result
link = os.readlink(result)
if os.path.isabs(link):
return link
return os.path.abspath(os.path.join(current, link))
if __name__ == "__main__":
if len(sys.argv) > 1:
follow_link(sys.argv[1])
else:
print("%s [directory]" % sys.argv[0])
sys.exit(1)
C'est un script abandonné, donc c'est approprié, mais tout ce que vous avez à faire est d'abord de décomposer le chemin, puis de descendre dans le répertoire tout en vérifiant s'il s'agit d'un lien symbolique dans l'ordre du haut. Je n'ai pas vérifié les erreurs, donc si un répertoire qui n'existe pas apparaît en chemin, je peux mourir.
$ followlink.py ./test/symdir/subdir #symdir est un lien symbolique vers realdir au même endroit
/Users/home/shibukawa/develop/test/realdir/subdir
Recommended Posts