Seite 1 von 1

Zugriff auf gemountetes Netzwerk-Share (smb) mit os.listdir()

Verfasst: Mittwoch 1. Januar 2025, 13:29
von LinuxRambo
Hallo zusammen,

meine DVD-Sammlung mit Filmen und Serien habe ich Mitte des Jahres auf meinen NAS gezogen. Damit ich einen Überblick zu den Inhalten bekomme, habe ich ein kleines Skript geschrieben, das mir alle Filme und Serien auflistet und sauber in ein HTML-File schreibt. Das Skript ist recht einfach gehalten, soll heißen, dass ich nur dann das Skript fehlerfrei durchlaufen lassen kann, wenn ich vorher im Datei-Explorer den NAS gemounted habe. Das ist für mich soweit auch in Ordnung.

Das Skript habe ich unter Linux erstellt und führe es auch von der Linux-Maschine aus. Im Kern nutze ich im Code os.listdir:
os.listdir('/run/user/1000/gvfs/smb-share:server=[servername].local,share=filme_und_serien/filme/')
Alles funktioniert super und es gibt keinerlei Probleme.

Nun habe ich mir ein MacBookAir zugelegt und möchte das Skript auf dem neuen Gerät laufen lassen.
Somit also im "Finder" den NAS einbinden und dann das Skript starten.

Der Finder zeigt mit folgenden Netzwerkpfad an:
smb://[servername]._smb._tcp.local/filme_und_serien/filme

Wenn ich nun den Pfad mit os.listdir übernehme,
z.B. so: os.listdir('smb://[servername]._smb._tcp.local/filme_und_serien/filme/')
bekomme ich eine Fehlermeldung, dass der Pfad nicht korrekt sei:
No such file or directory

os.listdir arbeitet ja nur lokal (korrekt?) aber durch die vorherige Einbindung im Finder, ist doch wie schon beim Linux-System die Übergabe der Anmeldedaten nicht notwendig..oder?
Wie müsste der Pfad lauten, damit ich das Verzeichnis einlesen kann?

Klärt mich bitte auf, sofern ich hier komplett auf dem Holzweg bin. :D

Gruß
LiRo

Re: Zugriff auf gemountetes Netzwerk-Share (smb) mit os.listdir()

Verfasst: Mittwoch 1. Januar 2025, 21:46
von __blackjack__
@LinuxRambo: Das im Finder ist kein Pfad, das ist eine URI. Damit können Dateifunktionen, die lokale Pfadangaben erwarten, nichts anfangen. Ich würde ja in beiden Fällen die Freigabe mounten und nicht versuchen auf irgendwelche komischen Pfade zuzugreifen unter denen Anwender-Programme das für ihre Zwecke einhängen.

Das unter Linux funktioniert ja auch nur wenn man das über gvfs macht, also letztlich Gnome, denn AFAIK sprechen die KDE-Dateimanager das SMB-Protokoll direkt, ohne das lokal ins Dateisystem irgendwo einzuhängen. Kann sein, dass der Finder unter MacOS das auch macht, dann gibt es keinen lokalen Pfad den man benutzen kann.

Randbemerkung: Statt `os.listdir()` und die Funktionen in `os.path` würde man heute eher auf das `pathlib`-Modul setzen.

Re: Zugriff auf gemountetes Netzwerk-Share (smb) mit os.listdir()

Verfasst: Donnerstag 2. Januar 2025, 12:36
von LinuxRambo
@__blackjack__: Danke für die Antwort. Ich werde die Freigabe mounten und schaue mir dann auch mal os.path an.

Gruß
LiRo