2009-09-22 4 views
5

si je tente explicitement de lister le contenu d'un répertoire partagé sur un hôte distant en utilisant python sur une machine Windows, l'opération réussit, par exemple, l'extrait suivant fonctionne très bien:partages réseau inscripteur avec python

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

Cependant, si je tente de répertorier les lecteurs réseau/répertoires disponibles sur l'hôte distant, python échoue, un exemple est illustré dans l'extrait de code suivant:

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

quelqu'un est-il au courant des raisons pour lesquelles cela ne travail?, toute aide/solution de contournement est appréciée.

+1

L'utilisateur a-t-il l'autorisation de lister les partages? Ou avez juste l'autorisation de lister les répertoires dans \\ remotehost \ share? –

+0

oui, l'utilisateur a des autorisations suffisantes pour les partages, même si je place l'hôte distant sur ma machine locale, j'observe toujours le même comportement –

+1

Juste un petit conseil: En traitant des backslash énormes pistes comme ça, c'est généralement plus facile pour entrer la chaîne en tant que chaîne brute, comme ceci: r '\\ remotehost \ share' vs '\\\\ remotehost \\ share'. Cela me sauve des maux de tête régulièrement. –

Répondre

4

Peut être pysmb peut aider

+0

essayé, la tentative initiale semble fonctionner :-) –

0

Désolé. Je ne suis pas capable d'essayer cela car je ne suis pas dans un PC. Avez-vous essayé:

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

l'a essayé, pas de joie –

1

Pour ceux qui se demandent encore comment lister les partages réseau au niveau supérieur sur Windows, vous pouvez utiliser le module win32net:

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

L'entier contrôle le type d'informations renvoyées, mais si vous voulez juste une liste de les actions alors 0 fera l'affaire.

Cela fonctionne où os.listdir ('\\ remotehost') échoue car '\\ remotehost' n'est pas un vrai dossier bien que Windows puisse l'afficher comme un seul.

Questions connexes