2017-06-26 2 views
0

Juste un bref aperçu de ce que je fais: J'essaie d'automatiser une routine de fusion de pdf avec python dans un répertoire réseau, ce qui implique la copie, la suppression et la création de fichiers spécifiques emplacement réseau. Toutes mes excuses si ma langue n'est pas très précise.Accéder à un dossier réseau via un programme python

Je suis en train de coder sur Windows 7, en utilisant python 3.6. Le programme devra être distribué sur d'autres machines, donc les correctifs locaux et temporaires ne seront probablement pas utiles. Le code que j'ai écrit est entièrement fonctionnel et fonctionne très bien avec tous les dossiers et fichiers locaux, cependant, maintenant que j'ai besoin de l'utiliser sur le réseau, j'ai quelques difficultés à accéder au dossier dont j'ai besoin.

Voici ce que j'ai essayé:

os.system("pushd " + "\\" + "\\netWorkDrive\Reports") 
check_output("pushd " + "\\" + "\\netWorkDrive\Reports", shell=True) 

pushd et popd excellent travail lorsqu'il est entré juste au cmd, mais quand je fais des appels système par python, ils ne vont pas à travers. J'envoie un appel système, et il fonctionne correctement, mais quand je "cd" un répertoire en cours, cela montre que je suis toujours dans le précédent. Si c'est fait par le cmd manuellement, tout fonctionne comme vous le souhaitez. J'ai googlé la question, mais n'a pas fini par trouver quelque chose de fonctionnel/utile. J'apprécierais vraiment toutes les suggestions, et laissez-moi savoir si je dois clarifier mon problème plus loin.

Merci!

+0

pourrait être un certain nombre de choses. Y a-t-il une adresse globale au disque? plutôt qu'une «lettre» cartographiée localement? (Par exemple, les grands réseaux intranet d'entreprise ont une adresse globale, que les employés mappent souvent sur leur propre lecteur "N:" (ou n'importe quelle lettre) .Utilisez l'adresse globale. 'en tant que tel: 'r'C:/Users/Vlox/Stuff'' le' r' indique une chaîne brute, donc les barres obliques seront lues correctement (ce sont régulièrement des caractères d'échappement python qui peuvent causer votre problème). vos backslashes ''C: // Users // Vlox // Stuff'' – Vlox

+0

Je crois que j'utilise une adresse globale puisque c'est ce que tout le monde utilise pour accéder au réseau" \\ notreFolderName \ reports ". , 'popd' va créer un disque temporaire pour moi, mais je ne suis pas encore à ce stade.La façon dont je suis entré slash compte déjà pour les caractères d'échappement, puisque j'ai testé une chaîne avec un nom de chemin, mais je encore essayé de "r", malheureusement cela n'a pas aidé –

+0

Le PUSHD fonctionne probablement bien. Cependant, lorsque le shell créé a été créé, vous revenez à votre processus existant qui a toujours le cwd avant d'appeler os.system(). – lit

Répondre

0

Je ne voudrais pas utiliser pushd/popd de telle sorte, je voudrais juste comprendre les chemins complets, y compris les chemins de réseau dans les chemins de tout le fonctionnement fichier que je dois faire

Toutefois, si je vraiment besoin de changer de travail répertoire, je le ferais avec python:

import os 

original_working_directory = os.getcwd() 

# do stuff 

new_networked_directory = r'\\server\share\folder' 
# change to the networked directory 
os.chdir(new_networked_directory) 

# do stuff 

#changeback to original working directory 
os.chdir(original_working_directory) 

# do more stuff 

Il ne devrait pas être nécessaire de "lecteurs temporaires" ou similaires.

+0

C'est là que j'ai commencé à l'origine, et j'ai été découragé par le fait que je ne peux pas accéder au serveur directement via cmd, mais en fait, je n'ai même pas à le faire! Je vous remercie! –