Erstellen einer relativen symlink in python ohne os.chdir()
Sagen, ich habe einen Pfad zu einer Datei:
/path/to/some/directory/file.ext
In python, ich möchte erstellen Sie einen symlink im gleichen Verzeichnis wie die Datei,,
Punkte auf die Datei. Ich möchte mit dieser:
/path/to/some/directory/symlink -> file.ext
Ich kann dies tun, ziemlich leicht mit os.chdir (), um die cd in das Verzeichnis und
erstellen Sie die symbolischen Links. Aber os.chdir() ist nicht thread-sicher, so möchte ich vermeiden
es zu benutzen. Unter der Annahme, dass das aktuelle Arbeitsverzeichnis des Prozesses ist nicht
das Verzeichnis mit der Datei (os.getcwd() != '/path/to/some/directory"),
was ist der beste Weg, dies zu tun?
Ich denke, ich könnte einen kaputten link in welchem Verzeichnis ich bin, dann
verschieben Sie Sie in das Verzeichnis mit der Datei:
import os, shutil
os.symlink('file.ext', 'symlink')
shutil.move('symlink', '/path/to/some/directory/.')
Gibt es einen besseren Weg, dies zu tun?
Hinweis, ich möchte nicht am Ende mit, ist dies:
/path/to/some/directory/symlink -> /path/to/some/directory/file.ext
os.symlink('/tar/get/of/link', '/var/tmp/lnk')
erstellen /var/tmp/lnk
unabhängig davon, wo Sie jetzt sind, und unabhängig davon, ob /tar/get/of
existiert, etc. Wenn Sie möchten, dass das Ziel nicht zu starten, mit /
dann nur os.symlink('target', '/var/tmp/lnk')
.InformationsquelleAutor Josh | 2012-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man einfach festlegen, das zweite argument an das Ziel, wie:
So stellen Sie sicher, den link Datei ist nicht vorhanden, oder besser, es zu entfernen
os.remove("/path/to/some/directory/symlink")
InformationsquelleAutor tito
Können Sie auch
os.path.relpath()
so dass Sie verwenden können symlinks mit relativen Pfaden. Sagen Sie Ihr Skript in einem Verzeichnisfoo/
und dieses Verzeichnis hat Unterverzeichnissesrc/
unddst/
, und Sie möchten, erstellen relative symlinks indst/
zu zeigen, um die Dateien insrc/
. So zu tun, die Sie tun können:Auflistung der Inhalte
dst/
zeigt dann:Relative Verknüpfungen sind nützlich, wenn Sie wollen erstellen Sie einen tarball, der das ganze
foo
Verzeichnis-Baum, denn ich glaube nichttar
updates symlinks auf den relativen Pfad innerhalb des erzeugten tarball.InformationsquelleAutor Weston Ruter