La documentation du module OS ne semble pas contenir d'informations sur l'ouverture d'un fichier qui ne se trouve pas dans un sous-répertoire ou le répertoire courant dans lequel le script s'exécute sans chemin complet. Ma structure de répertoire ressemble à ceci.Python os module ouvre le fichier au-dessus du répertoire actuel avec le chemin relatif
/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt
open("../../fileIwantToOpen.txt","r")
enregistre les fichiers non trouvé erreur. Mais si je lance un interpréteur python dans le répertoire cgi-bin et que j'essaie open("../../fileIwantToOpen.txt","r")
cela fonctionne. Je ne veux pas coder en dur dans le chemin complet pour des raisons évidentes de portabilité. Existe-t-il un ensemble de méthodes dans le module OS que CAN font cela?
Hmm. Cela peut être une erreur d'autorisation, ou le répertoire de travail pour le CGI peut ne pas être le même que votre interpréteur Python. Le message d'erreur exact pourrait aider. De même, dans votre CGI, essayez 'print os.getcwd()' et voyez ce que cela signifie. –
Votre script CGI s'exécute-t-il dans une prison chroot? Si c'est le cas, cela ne fonctionnera pas puisque vous ne pouvez pas échapper à la prison. –
@ Adam Rosenfield no. @Jason Je lance littéralement l'interpréteur python dans le répertoire cgi-bin, donc je ne comprends pas comment cela fonctionnerait dans celui-là et pas dans le script qui tourne dans le répertoire cgi-bin. –