Python脚本不了解DIRECTORY和FILE之间的区别

时间:2014-03-20 13:28:15

标签: python

大家好,可以提供帮助! 下面的Python脚本给出了以下错误

File "/var/www/lighttpd/example.com/CloudMining/cloudmining/lib/dirmap.py", line 104, in __getattr__
    return self._read(name)
File "/var/www/lighttpd/example.com/CloudMining/cloudmining/lib/dirmap.py", line 81, in _read
    raise AttributeError('No file named ' + name)
AttributeError: No file named public

问题在于将配置与此脚本相关联将PUBLIC定义为目录,而不是文件!

pub_dir = os.path.join(path, './public')
if os.path.exists(pub_dir):
    self.set_public_dir(pub_dir)

但下面的脚本将PUBLIC读作文件 - 并给出错误。 脚本的所有其他问题都可以,它理解结构,它以

之类的格式打开文件
app.add_stylesheets('/public/custom.css')

所以所有相对路径都在工作。 但是下面的代码包含将./public目录读为FILE而不是目录的错误。

将有义务尝试纠正错误 - 我甚至找不到错误。

“有问题”的行(根据调试)是98-104(大约)

def __getattr__(self, name):
    if self._cache is not None:
        if name not in self._cache:
            self._cache[name] = self._read(name)
        return self._cache[name]
    else:
        return self._read(name)

和65-81(大约) - 大部分都是这些行调用错误

def _read(self, name, reader=None):
    kind, path = self._lookup(name)
    if kind == 'dir':
        if path not in self._sub_dirs:
            self._sub_dirs[path] = DirectoryMapper(path,
                cache=self._cache is not None, readers=self._readers)
        return self._sub_dirs[path]
    elif kind == 'file':
        if not reader:
            ext = os.path.splitext(path)[-1]
            if ext in self._readers:
                reader = self._readers[ext]
            else:
                reader = self._readers.get('*', file_reader)
        return reader(path, **reader.func_dict.get('keywords', {}))
    else:
        raise AttributeError('No file named ' + name)

完整脚本可用here

1 个答案:

答案 0 :(得分:0)

  

问题在于将配置与此脚本相关联将PUBLIC定义为目录,而不是文件!

     

但下面的脚本将PUBLIC读作文件 - 并给出错误。

嗯,你的代码给出了属性错误,如果kind不是文件而不是dir ...

所以我猜有一个不同的问题......

你确定./public是正确的吗?

和Stylesheets / public / custom .....它是否在root中?