[PYTHON] Konvertieren Sie eine Pfadzeichenfolge, die einen symbolischen Link in der Mitte verwendet, in einen absoluten Pfad

Ein Skript, das einen absoluten Pfad erstellt, wenn ein Verzeichnis mit einem symbolischen Link in der Mitte des Pfads angegeben wird.

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)

Es ist ein verworfenes Skript, daher ist es angemessen, aber alles, was Sie tun müssen, ist, zuerst den Pfad aufzuschlüsseln und dann das Verzeichnis zu durchsuchen, während Sie prüfen, ob es sich um einen Symlink in der Reihenfolge von oben handelt. Da ich nicht nach Fehlern gesucht habe, kann ich sterben, wenn ein Verzeichnis angezeigt wird, das unterwegs nicht vorhanden ist.

Wie benutzt man

$ followlink.py ./test/symdir/subdir  #symdir ist eine symbolische Verbindung zu realdir am selben Ort
/Users/home/shibukawa/develop/test/realdir/subdir

Recommended Posts

Konvertieren Sie eine Pfadzeichenfolge, die einen symbolischen Link in der Mitte verwendet, in einen absoluten Pfad
Konvertieren Sie eine Zeichenfolge in ein Bild
Die eval () -Funktion, die eine Zeichenfolge als Ausdruck in Python berechnet
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ein String-Sortiercode, der einen Algorithmus verwendet, der eine Permutation generiert.
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
So setzen Sie einen symbolischen Link
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
[Ln] Das Einfügen des symbolischen Links des Verzeichnisses ist kompliziert
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
Hinweis: [Python3] Konvertiert datetime in eine Zeichenfolge in einem beliebigen Format
Es war gefährlich, beim Generieren einer symbolischen Verknüpfung einen relativen Pfad anzugeben
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Zeigen Sie den vollständigen Pfad (absoluten Pfad) einer Datei in einem Verzeichnis in Linux Bash an
Ich möchte einen Teil der Excel-Zeichenfolge mit Python einfärben
Verwenden Sie BeautifulSoup, um einen Link mit einer Zeichenfolge aus einer HTML-Datei zu extrahieren
Konvertieren Sie die absolute URL in eine relative URL in Python
Ich möchte eine API erstellen, die ein Modell mit einer rekursiven Beziehung im Django REST Framework zurückgibt
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Erstellen Sie einen Filter, um ein Zugriffstoken mit der Graph-API (Flask) zu erhalten.
Was gefällt Ihnen an der Konvertierung eines Arrays (einer Liste) in einen String?
Einbetten von Variablen in Python-Strings
Fügen Sie ein Objekt in eine Zeichenfolge in Python ein
Eine Geschichte, die fehlgeschlagen ist, als versucht wurde, das Suffix mit rstrip aus einem String zu entfernen
[Ansible] Beispiel für ein Playbook, das der ersten Zeile der Datei eine Zeichenkette hinzufügt
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
Eine Geschichte über einen Fehler, wenn PyInstaller in einem Programm verwendet wird, das googleapiclient verwendet
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Eine Lösung für das Problem, dass Dateien mit [und] nicht in glob.glob () aufgeführt sind
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht
Ich habe in Python ein Programm erstellt, das die 1-Minuten-Daten von FX auf eine beliebige Zeit (1 Stunde usw.) ändert.
Überprüfen Sie, ob die Zeichenfolge eine Zahl in Python ist
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
Ich möchte eine Variable in einen Python-String einbetten
[Python] So erweitern Sie Variablen in einer Zeichenfolge
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Konvertieren Sie das Bild in .zip mit Python in PDF
[Python] Erstellt eine Methode zum Konvertieren von Radix in 1 Sekunde
[C / C ++] Übergeben Sie den in C / C ++ berechneten Wert an eine Python-Funktion, um den Prozess auszuführen, und verwenden Sie diesen Wert in C / C ++.
Beim Lesen eines Bildes mit SimpleITK tritt ein Problem auf, wenn sich Japanisch im Pfad befindet
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Eine Geschichte, die das Debuggen von Modellen in der Django + SQLAlchemy-Umgebung einfacher macht
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern