Récupérer le contenu d'un répertoire sur un disque réseau (windows)
Je vais avoir un problème sur l'affichage des fichiers à partir d'un lecteur réseau sous Windows.
path = "\\\\nexus\\File Server\\Technical\\MyDrive\\Software\\Releases\\%s\\%s\\" %(release, module)
où \\nexus\
est un lecteur réseau.
Mon principal problème est donnée par un utilisateur de corriger les variables, je ne suis pas en mesure d'afficher le contenu du répertoire (le contenu de "module").
Choses que j'ai essayé
os.listdir(path)
Le problème avec la ligne ci-dessus est qu'il renvoie une erreur windows [123], qui est, ne peut pas trouver le répertoire d'erreur. C'est parce que listdir() semble double tous les anti-slashes
ce qui entraîne :"\\\\\\\\nexus\\File Server\\\\Technical\\\\MyDrive\\\\Software\\\\Releases\\\\release\\\\module\\\\"
print(glob.glob(path))
Je ne savais pas vraiment exactement comment cela fonctionne 😛 mais il semble juste pour afficher le répertoire fourni et non pas le contenu de la fin répertoire\\nexus\File Server\Technical\MyDrive\Software\Releases\release\module\"
J'ai vu un os.walk
cependant je ne sais pas comment sa fonctionne, que comment il définit ce qu'est le répertoire de base /répertoires et qu'est-ce que le reste du chemin
Notes supplémentaires: Le contenu de "module" sera toujours un fichier zip, également le répertoire contiennent généralement à un maximum de cinq fichiers zip.
vous devez supprimer toutes les doubles barres obliques que vous avez. utiliser une chaîne brute en mettant
Essayez ceci: path = "//nexus/Serveur de Fichiers/Technique/MyDrive/Logiciel/Releases/%s/%s/" %(libération, le module)
Pas avec la barre oblique de fin, qui ne fonctionne pas..
oui, merci, sa tôt le matin et je n'ai toujours pas fini mon café 🙂
Pouvez-vous tout simplement la carte
r
en face d'elle. donc, il devrait ressembler à ceci: r'\\nexus\File Server\Technical\MyDrive\Software\Releases\release\module\'
c'est la première chose. essayez que. d'autre part, sur windows, vous pouvez également utiliser des barres obliques, comme ceci: r'\\nexus/File Server/Technical/MyDrive/Software/Releases/release/module/'
mais vous avez encore besoin de la double barre oblique inverse pour un réseau de ressources.Essayez ceci: path = "//nexus/Serveur de Fichiers/Technique/MyDrive/Logiciel/Releases/%s/%s/" %(libération, le module)
Pas avec la barre oblique de fin, qui ne fonctionne pas..
module\'
échappe à cette fermeture '
, même en raw littéraux de chaîne.oui, merci, sa tôt le matin et je n'ai toujours pas fini mon café 🙂
Pouvez-vous tout simplement la carte
\\nexus
à Z:
? Question similaire ici: stackoverflow.com/questions/1459590/...OriginalL'auteur Verric | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
Viens de tester sur mon PC XP, Python 2.7, partage SMB
\\myshare
Je pense qu'une partie de la confusion qui pourrait être causé par WindowsError montrant la
repr()
du chemin, plutôt que le chemin d'accès réel -Si c'est un Python 3 & unicode problème, je vous suggère d'essayer de corriger la chaîne:
(malheureusement je ne peux pas tester cela, car je n'ai pas de Python 3 est installé, mais s'il vous plaît laissez-moi savoir si cela fonctionne et je vais modifier ma réponse)
Aussi, puisque je ne suis pas au travail demain, je ne peux pas vraiment tester de nouvelles solutions ou des idées jusqu'à lundi, je peux vpn dans notre réseau, cependant je ne suis pas sûr de la façon python gère Merci pour toutes les réponses,
Pas de soucis, laissez-moi savoir comment vous allez quand vous obtenez une chance. Je suggère d'essayer de s'assurer que Python pense
\\nexus\File Server\Technical
existe d'abord, puis vous pouvez vous soucier de remplacement de chaînes de caractères :). (isdir()
ouexists()
devrait aider)Qu'advient-il si le dossier partagé a des informations d'identification? J'ai le nom d'utilisateur et mot de passe. Où dois-je mettre ces paramètres?
ne stackoverflow.com/questions/28865050/... de l'aide?
OriginalL'auteur Alex L
Cette une a fonctionné pour moi:
(avec Python 2.7 32b sur Win7 64b)
'\\\\server/folder'
et'//server/folder'
œuvresOriginalL'auteur matekatona
La solution de contournement pour ce problème est la suivante:
Cela signifie que vous avez à utiliser des doubles barres obliques au lieu d'un seul.
OriginalL'auteur Viktor Malyi