[PYTHON] Convertir une chaîne de chemin qui utilise un lien symbolique au milieu en un chemin absolu

Un script qui crée un chemin absolu lorsqu'un répertoire est spécifié avec un lien symbolique au milieu du chemin.

code

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.

Comment utiliser

$ 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

Convertir une chaîne de chemin qui utilise un lien symbolique au milieu en un chemin absolu
Convertir une chaîne en image
Fonction Eval () qui calcule une chaîne de caractères comme expression en python
Comment convertir / restaurer une chaîne avec [] en python
Un code de tri de chaîne qui utilise un algorithme qui génère une permutation.
[Python] Programmation pour trouver le nombre de a dans une chaîne de caractères qui se répète un nombre spécifié de fois.
Comment mettre un lien symbolique
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
[Ln] Comment coller le lien symbolique du répertoire est compliqué
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
Remarque: [Python3] Convertissez datetime en chaîne dans le format de votre choix
Il était dangereux de spécifier un chemin relatif lors de la génération d'un lien symbolique
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Afficher le chemin complet (chemin absolu) d'un fichier dans un répertoire sous Linux Bash
Je veux colorer une partie de la chaîne Excel avec Python
Utilisez BeautifulSoup pour extraire un lien contenant une chaîne d'un fichier HTML
Convertir une URL absolue en URL relative en Python
Je souhaite créer une API qui retourne un modèle avec une relation récursive dans Django REST Framework
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
J'ai créé une commande appdo pour exécuter des commandes dans le contexte de l'application
Créez un filtre pour obtenir un jeton d'accès avec l'API Graph (Flask)
Qu'est-ce que vous aimez dans la conversion d'un tableau (liste) en chaîne?
Comment incorporer des variables dans des chaînes python
Insérer un objet dans une chaîne en Python
Une histoire qui a échoué lors de la tentative de suppression du suffixe d'une chaîne avec rstrip
[Ansible] Exemple de playbook qui ajoute une chaîne de caractères à la première ligne du fichier
[Python] Ne laissez que les éléments commençant par une chaîne de caractères spécifique dans le tableau
Une histoire sur une erreur lorsque PyInstaller est utilisé dans un programme qui utilise googleapiclient
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()
Comment trouver le premier élément qui correspond aux critères de la liste Python
J'ai créé un programme en Python qui change les données de 1 minute de FX en une heure arbitraire (1 heure, etc.)
Vérifiez si la chaîne est un nombre en python
Analyser une chaîne JSON écrite dans un fichier en Python
Je souhaite intégrer une variable dans une chaîne Python
[Python] Comment développer des variables dans une chaîne de caractères
#Une fonction qui renvoie le code de caractère d'une chaîne de caractères
Convertissez l'image au format .zip en PDF avec Python
[Python] Création d'une méthode pour convertir la base en 1 seconde
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
Lors de la lecture d'une image avec SimpleITK, il y a un problème s'il y a du japonais dans le chemin
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Une histoire qui rend le débogage de modèle plus facile à voir dans l'environnement Django + SQLAlchemy
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Un moyen simple de visualiser le temps pris en Python et un moyen plus intelligent de l'améliorer