Ubuntu加密的主目录| Errno 36文件名太长了

时间:2013-02-15 00:39:20

标签: python python-2.7 ubuntu-12.04

使用python scraper / spider并遇到一个超过char限制的URL,标题为IOError。使用httplib2,当我尝试检索URL时,我收到的文件名太长错误。因为我使用的是Dropbox,所以我更喜欢将所有项目放在主目录中。无论如何围绕这个问题,还是我应该在家外设置我的工作目录?

3 个答案:

答案 0 :(得分:6)

您可能会遇到加密文件系统的限制,文件名最多允许143个字符。

这是错误: https://bugs.launchpad.net/ecryptfs/+bug/344878

现在的解决方案是使用加密主目录之外的任何其他目录。要仔细检查一下:

mount | grep ecryptfs

并查看您的主目录是否已列出。 如果是这种情况,要么在家中使用其他目录,要么在不使用加密的情况下创建新的主目录。

答案 1 :(得分:2)

文件名太长,以'.cache/www.example.com'开头,这解释了问题。

httplib2可选地缓存您发出的请求。您已启用缓存,并且已将其.cache作为缓存目录。

简单的解决方案是将缓存目录放在其他位置。

如果没有看到您的代码,就无法告诉您如何修复它。但它应该是微不足道的。 FileCache的文档显示它需要dir_name作为第一个参数。

或者,您也可以传递safe函数,该函数允许您从URI生成文件名,从而覆盖默认值。这将允许您生成符合Ubuntu加密fs的144个字符限制的文件名。

或者,您也可以使用与FileCache相同的接口创建自己的对象,并将其传递给Http对象以用作缓存。例如,您可以使用tempfile创建随机文件名,并将URL映射到anydbmsqlite3数据库中的文件名。

当然,最后一种选择就是关闭缓存。

答案 2 :(得分:2)

由于您显然已将'.cache'传递给httplib.Http构造函数,因此应将其更改为更合适的内容或禁用缓存。