【问题标题】:mod_python not detecting files when using open()使用 open() 时 mod_python 未检测到文件
【发布时间】:2011-01-16 19:22:13
【问题描述】:

我正在尝试打开我的 /var/www/ 目录中名为 cardlist.xml 的文件。 这是我正在使用的代码。

import cgi
import os
open("./cardlist.xml", "r")
def crawlXml():
    return 0

我的错误是

MOD_PYTHON 错误

ProcessId:11361 解释器:
'127.0.1.1'

服务器名称:'127.0.1.1' DocumentRoot: '/var/www'

URI: '/test.py/crawlXml' 位置:无 目录:
'/var/www/' 文件名:
'/var/www/test.py' 路径信息:
'/crawlXml'

阶段:'PythonHandler' 处理程序:'mod_python.publisher'

Traceback(最近一次通话最后一次):

文件 "/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 中 结果 = _execute_target(config, req, object, arg)

文件 "/usr/lib/python2.6/dist-packages/mod_python/importer.py", 第 1128 行,在 _execute_target 结果 = 对象(arg)

文件 "/usr/lib/python2.6/dist-packages/mod_python/publisher.py", 第 204 行,在处理程序中 模块 = 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 中 日志,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'

模块缓存详细信息

访问时间:2 月 14 日星期日 16:59:58 2010世代:19

_mp_27cc55c5447f9e0aa13691719290c225 { 文件名:'/var/www/test.py'
实例:85 [重新加载]
世代:19 [错误] 修改:
2010 年 2 月 14 日星期日 16:40:17 进口:
2010 年 2 月 14 日星期日 16:22:38 }

这是 ls -la 的结果

/var/www/ 目录 drwxr-xr-x 3 root 根 4096 2010-02-14 16:40。 drwxr-xr-x 16 根根 4096 2010-02-14 15:05.. -rwxr-xr-x 1 根 4612891 2010-01-30 16:39 cardlist.xml drwxrwx--- 3根根4096 2010-02-14 14:31 -rw-r--r-- 1 根根 110 2010-02-14 16:40 test.py -rw-r--r-- 1根root 111 2010-02-14 16:32 test.py~

有人知道怎么回事吗?

【问题讨论】:

  • 1.你试过绝对路径吗? 2.os.path.abspath('./cardlist.xml')返回什么?
  • os.path.abspath('./cardlist.xml') 返回 /cardlist.xml 我不确定什么是“绝对路径”。 /var/www/cardlist.xml?

标签: python apache2 mod-python


【解决方案1】:

工作目录可能不是文件所在的目录。尝试使用绝对路径或显式相对路径:

import os.path
open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'cardlist.xml'))

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2013-02-25
    • 1970-01-01
    • 2010-12-13
    • 2021-07-09
    • 2020-01-25
    • 2016-10-30
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多