Frage

Ich benutze Python 2.5 auf Ubuntu, und es gibt eine Maschine im selben Netzwerk namens machine1. Der Ordner wird geteilt.

Wie bekomme ich eine Datei in einem bestimmten Ordner dieser Maschine?

Ich habe es ohne Erfolg versucht:

urllib.urlopen('\\machine1\folder\file.txt')
War es hilfreich?

Lösung

Linux hat eine nützliche genannte Nutzerin smbmount, was in Paket -Smbutils zu finden ist, glaube ich.

Dies ist ein Befehlszeilen -Dienstprogramm, das ein Windows -Freigabe an ein Verzeichnis auf dem lokalen Computer montiert, optional mit Benutzername/Passwort.

Smbmount ist ein Dienstprogramm, das als Root dauert. Ob es für Sie geeignet ist, weiß ich nicht. Vielleicht kann es als Benutzer verwendet werden.

Sie können die Freigabe standardmäßig auf dem Linux -Computer montieren, wodurch auf die Dateien als lokale Dateien zugegriffen werden, oder Sie können mit dem SMBMount / SMBOumount mit Exec oder ähnlichem aus dem Python -Skript oder so etwas ausführen.

mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare

Benutzername und Passwort können für Sicherheit in eine Datei geschrieben werden. Überprüf den Mann Seite.

Wenn Sie etwas total Python brauchen, schauen Sie sich einen Blick auf pysmb. Begriffe zu Google für sind Python, SMB, CIFS.

Andere Tipps

urllib versteht das SMB -Protokoll nicht. Sie müssen verwenden gio über Pygobject, um die Datei abzurufen.

Wenn der Ordner gemeinsam genutzt wird, sollte er in ~/.gvfs montiert werden. Vielleicht können Sie einfach verwenden open Auf dem Weg, wie Sie es in ~/.gvfs sehen.

Sie sollten nach dem Standarddateibrowser suchen.

Und dann können Sie den Prozess ausführen und den gewünschten Ordner als Argument übergeben (SMB: // machine1/Ordner/).

Zum Beispiel unter Windows würden Sie tun:

execl("explorer.exe", "D:")

Versuchen Sie, nach dem Pfad zu Ihrem Dateibrowser zu suchen (meistens ist es Nautilus).

So:

execl("/bin/nautilus", "smb://.../")

Einige Informationen zu Execl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top