Die Dokumentation für das OS-Modul scheint keine Informationen darüber zu enthalten, wie eine Datei geöffnet wird, die sich nicht in einem Unterverzeichnis oder dem aktuellen Verzeichnis befindet, in dem das Skript ausgeführt wird vollständigen Pfad. Meine Verzeichnisstruktur sieht so aus.Python os-Modul geöffnete Datei über aktuellem Verzeichnis mit relativem Pfad
/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt
open("../../fileIwantToOpen.txt","r")
Gibt eine Datei nicht gefunden Fehler. Aber wenn ich einen Python-Interpreter im cgi-bin-Verzeichnis starte und open("../../fileIwantToOpen.txt","r")
versuche, funktioniert es. Ich möchte aus offensichtlichen Portabilitätsgründen nicht den vollständigen Pfad fest codieren. Gibt es eine Reihe von Methoden im OS-Modul, die CAN dies tun?
Hmm. Dies könnte ein Berechtigungsfehler sein, oder das Arbeitsverzeichnis für das CGI ist möglicherweise nicht dasselbe wie Ihr Python-Interpreter. Die genaue Fehlermeldung könnte helfen. Versuchen Sie auch in Ihrem CGI 'print os.getcwd()' und sehen Sie, was das sagt. –
Wird Ihr CGI-Skript in einem Chroot-Gefängnis ausgeführt? Wenn ja, dann wird das nicht funktionieren, da du nicht aus dem Gefängnis entkommen kannst. –
@ Adam Rosenfield Nr. @Jason Ich führe den Python-Interpreter buchstäblich im cgi-bin-Verzeichnis, so dass ich nicht verstehe, wie es in diesem Skript funktioniert und nicht innerhalb des Skripts, das im cgi-bin-Verzeichnis ausgeführt wird. –