mod_python 使用 open() 时无法检测到文件
我正在尝试打开一个位于我的 /var/www/ 目录下的文件,名字叫 cardlist.xml。以下是我使用的代码。
import cgi
import os
open("./cardlist.xml", "r")
def crawlXml():
return 0
我遇到的错误是:
MOD_PYTHON 错误
进程ID: 11361 解释器:
'127.0.1.1'服务器名称: '127.0.1.1' 文档根目录: '/var/www'
请求的URI: '/test.py/crawlXml' 位置: 无 目录:
'/var/www/' 文件名:
'/var/www/test.py' 路径信息:
'/crawlXml'阶段: 'PythonHandler' 处理程序: 'mod_python.publisher'
追踪信息(最近的调用在最前面):
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第1537行,在 HandlerDispatch default=default_handler, arg=req, silent=hlist.silent)
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第1229行,在 _process_target result = _execute_target(config, req, object, arg)
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第1128行,在 _execute_target result = object(arg)
文件 "/usr/lib/python2.6/dist-packages/mod_python/publisher.py", 第204行,在 handler module = page_cache[req]
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第1059行,在 getitem return import_module(req.filename)
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第296行,在 import_module log, import_path)
文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第680行,在 import_module execfile(file, module.dict)
文件 "/var/www/test.py", 第4行,在 open("./cardlist.xml", "r")
IOError: [Errno 2] 没有这样的文件或目录: './cardlist.xml'
模块缓存详情
访问时间: 2010年2月14日 16:59:58 生成次数: 19
_mp_27cc55c5447f9e0aa13691719290c225 { 文件名: '/var/www/test.py'
实例: 85 [重新加载]
生成次数: 19 [错误] 修改时间:
2010年2月14日 16:40:17 导入时间:
2010年2月14日 16:22:38 }
这是在
/var/www/ 目录下执行 ls -la 的结果 drwxr-xr-x 3 root root 4096 2010-02-14 16:40 . drwxr-xr-x 16 root root 4096 2010-02-14 15:05 .. -rwxr-xr-x 1 root root 4612891 2010-01-30 16:39 cardlist.xml drwxrwx--- 3 root root 4096 2010-02-14 14:31 mtg -rw-r--r-- 1 root root 110 2010-02-14 16:40 test.py -rw-r--r-- 1 root root 111 2010-02-14 16:32 test.py~
有没有人知道出了什么问题?
1 个回答
工作目录可能并不是文件所在的目录。你可以试着使用绝对路径,或者明确的相对路径:
import os.path
open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'cardlist.xml'))