OS模块的文档似乎没有关于如何打开不在子目录中的文件或运行脚本的当前目录中的信息,而没有完整路径。我的目录结构看起来像这样。Python os模块以相对路径打开当前目录上的文件
/home/matt/project/dir1/cgi-bin/script.py
/home/matt/project/fileIwantToOpen.txt
open("../../fileIwantToOpen.txt","r")
给出文件未找到错误。但是,如果我在cgi-bin目录中启动python解释器并尝试使用open("../../fileIwantToOpen.txt","r")
。出于明显的可移植性原因,我不想在完整路径中进行硬编码。操作系统模块中是否有一组方法,CAN这样做?
嗯。这可能是一个权限错误,或者CGI的工作目录可能与你的python解释器不一样。确切的错误信息可能会有帮助。另外,在你的CGI中,尝试`print os.getcwd()`看看有什么说的。 – 2010-12-07 21:09:11
您的CGI脚本是否在chroot监狱运行?如果是这样,那么这是行不通的,因为你无法逃离监狱。 – 2010-12-07 21:15:48