6 Stimmen

Auflistung von Netzwerkfreigaben mit Python

Wenn ich explizit versuche, den Inhalt eines freigegebenen Verzeichnisses auf einem entfernten Host mit Python auf einem Windows-Rechner aufzulisten, ist der Vorgang erfolgreich, z. B. funktioniert das folgende Snippet einwandfrei:

os.listdir("\\\\remotehost\\share")

Wenn ich jedoch versuche, die auf dem entfernten Host verfügbaren Netzlaufwerke/Verzeichnisse aufzulisten, schlägt Python fehl, wie das folgende Codefragment zeigt:

os.listdir("\\\\remotehost")

Weiß jemand, warum dies nicht funktioniert?, jede Hilfe/Abhilfe ist willkommen.

1 Stimmen

Hat der Benutzer die Erlaubnis, Aktien aufzulisten? Oder hat er nur die Erlaubnis, Verzeichnisse aufzulisten in \\remotehost\share ?

0 Stimmen

Ja, der Benutzer verfügt über ausreichende Berechtigungen für die Freigaben. Selbst wenn ich den Remote-Host auf meinen lokalen Rechner setze, beobachte ich immer noch dasselbe Verhalten

1 Stimmen

Kleiner Tipp: Bei großen Backslash-Spuren wie dieser ist es im Allgemeinen einfacher, die Zeichenfolge als Rohzeichenfolge einzugeben, etwa so: r' \\remotehost\share ' vs. ' \\\\remotehost\\share '. Das erspart mir regelmäßig Kopfschmerzen.

5voto

Victor Kotseruba Punkte 836

Kann sein pysmb kann helfen

3voto

jwlitts Punkte 86

Für alle, die sich immer noch fragen, wie man Netzwerkfreigaben auf der obersten Ebene unter Windows auflistet, können Sie das win32net-Modul verwenden:

import win32net
shares, _, _ = win32net.NetShareEnum('remotehost',0)

Die Ganzzahl steuert die Art der zurückgegebenen Informationen, aber wenn Sie nur eine Liste der Aktien wünschen, reicht 0 aus.

Dies funktioniert, wenn os.listdir(' \\remotehost ') scheitert als ' \\remotehost ' ist kein echter Ordner, obwohl Windows ihn wie einen solchen anzeigen kann.

1voto

Troy Punkte 690

Ich bin sicher, dass der Auftraggeber diese Frage inzwischen vergessen hat, aber hier ist (vielleicht) eine Erklärung:

http://www.python.org/doc/faq/Windows/#why-does-os-path-isdir-fail-on-nt-shared-directories

Für den Fall, dass jemand anderes dieses Problem hat, so wie ich es hatte.

0voto

luc Punkte 39730

-1voto

Santi Punkte 4268

Entschuldigung. Ich bin nicht in der Lage, dies zu versuchen, da ich nicht an einem PC sitze. Haben Sie es versucht:

os.listdir("\\\\remotehost\\")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X