La documentación para el módulo OS no parece tener información sobre cómo abrir un archivo que no está en un subdirectorio o el directorio actual en el que se ejecuta el script sin un ruta completa. Mi estructura de directorio se ve así.Módulo Python os archivo abierto sobre el directorio actual con ruta relativa
/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt
open("../../fileIwantToOpen.txt","r")
Da un error de archivo no encontrado. Pero si inicio un intérprete de Python en el directorio cgi-bin y pruebo open("../../fileIwantToOpen.txt","r")
, funciona. No quiero el código difícil en la ruta completa por razones obvias de portabilidad. ¿Hay un conjunto de métodos en el módulo del sistema operativo que CAN hacer esto?
Hmm. Esto podría ser un error de permisos, o el directorio de trabajo para el CGI podría no ser el mismo que el de su intérprete de Python. El mensaje de error exacto podría ayudar. Además, en su CGI, intente 'print os.getcwd()' y vea lo que dice. –
¿Se está ejecutando la secuencia de comandos CGI en una cárcel chroot? Si es así, entonces esto no funcionará, ya que no puede escapar de la cárcel. –
@ Adam Rosenfield no. @Jason literalmente ejecuto el intérprete de Python en el directorio cgi-bin, así que no entiendo cómo funcionaría en ese y no dentro del script que se ejecuta en el directorio cgi-bin. –