6
votes

django [errno 2] Aucun fichier ou répertoire de ce type:

J'ai construit un script pour lire un fichier Excel et enregistrer le contenu dans ma base de données. (Remarque: le fichier et le script sont dans différents répertoires). Cependant, lorsque j'essaie d'exécuter le script de mes points de vue.py comme une importation simple, Django jette une erreur qu'il ne trouve pas le fichier ou le répertoire: xxx

mon code actuel dans le script Comme ceci: xxx

où mon script est dans le répertoire parent. Exécuter le script de la ligne de commande fonctionne très bien, alors je me débats avec la raison pour laquelle Django la lit différemment.

Mes Vues.py fonctionne (note: i Retournez au répertoire parent pour trouver le script - ce qui semble fonctionner correctement, je ne trouve que le fichier Excel que j'ai besoin de lire dans): xxx

Tout guidage est grandement apprécié!


3 commentaires

Le script est gdrat.py


Pourquoi ne le rejoignez pas avec le répertoire media / est sous?


Avez-vous fatigué l'ouvrir avec XLRD à l'extérieur de Django? Dans une coquille ou un terminal?


3 Réponses :


3
votes

Lorsque vous exécutez un script à partir du terminal, vous disposez d'un répertoire de travail actuel à partir duquel tout chemin relatif démarre, lors de l'appelant le même script à partir d'un autre code que votre répertoire de travail pourrait être différent.

Si vous connaissez la position du Fichier relatif au script, je vous suggère d'utiliser un chemin absolu construit de manière dynamique comme ceci: xxx

__ file__ vous donne le chemin du fichier actuel qui est le script (en supposant cela. la ligne est placée dans le script);
Pour Dirname, voir http://docs.python.org/ 2 / Bibliothèque / OS.Path.html # Os.Path.DirName
Pour realPath, voir http://docs.python.org/ 2 / bibliothèque / os.path.html # os.path.realpath


5 commentaires

J'essaie de mettre en œuvre cette solution, mais le fichier ) ajoutez mon script au chemin? Quand j'imprime gdrat_abs_path (pour voir ce qui se passe) dans le terminal, je vois gdrat.py/media/documents..etc .. Comment puis-je échapper à gdrat.py mais toujours utiliser le chemin dynamique?


BTW - J'ai pu utiliser cela, mais a dû trancher la gdrat.py hors du gdrat_abs_path et créer un objet alternatif - un peu volumineux mais travaillé ..


Oups, tu as raison :) J'aurais dû envelopper Os.Path.realpath au os.Path.dirname, j'ai corrigé la réponse


Vous devez également utiliser OS.Path.Join au lieu de coder du disque dur, le séparateur de chemin de chemin, en règle générale, n'utilisez jamais «/» dans les opérations de chemin dans Python.


Je sais que ce post est un oldie, mais il résolu toujours mon problème. Merci!



8
votes

cela fonctionne pour moi xxx


0 commentaires

3
votes

paramètres.py
media_root = os.path.join (base_dir, 'media')
xxx


0 commentaires