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!
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
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é –
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