Python Ubuntu加密主目录| Errno 36文件名太长
使用python刮刀/爬行器时,遇到一个URL,该URL超过了字符限制,带有标题IOError。使用httplib2,当我尝试检索URL时,我收到一个文件名过长的错误。我更喜欢把我所有的项目都放在主目录中,因为我使用的是Dropbox。不管怎样,还是我应该在家之外设置我的工作目录?文件名太长,以Python Ubuntu加密主目录| Errno 36文件名太长,python,python-2.7,ubuntu-12.04,Python,Python 2.7,Ubuntu 12.04,使用python刮刀/爬行器时,遇到一个URL,该URL超过了字符限制,带有标题IOError。使用httplib2,当我尝试检索URL时,我收到一个文件名过长的错误。我更喜欢把我所有的项目都放在主目录中,因为我使用的是Dropbox。不管怎样,还是我应该在家之外设置我的工作目录?文件名太长,以开头。cache/www.example.com'解释了这个问题 httplib2可以选择缓存您发出的请求。您已经启用了缓存,并将其指定为缓存目录.cache 简单的解决方案是将缓存目录放在其他地方 如果
开头。cache/www.example.com'
解释了这个问题
httplib2
可以选择缓存您发出的请求。您已经启用了缓存,并将其指定为缓存目录.cache
简单的解决方案是将缓存目录放在其他地方
如果没有看到您的代码,就不可能告诉您如何修复它。但它应该是微不足道的。的文档显示,它将dir\u name
作为第一个参数
或者,您也可以传递一个safe
函数,该函数允许您从URI生成文件名,覆盖默认值。这将允许您生成适合Ubuntu加密fs的144个字符限制的文件名
或者,您也可以使用与FileCache
相同的接口创建自己的对象,并将其传递给Http
对象以用作缓存。例如,您可以使用tempfile
创建随机文件名,并在anydbm
或sqlite3
数据库中存储URL到文件名的映射
当然,最后一种选择是关闭缓存。因为您显然已经将
'.cache'
传递给httplib.Http
构造函数,您应该将其更改为更合适的方式或禁用缓存。您可能遇到了加密文件系统的限制,允许文件名中最多包含143个字符
以下是错误:
目前的解决方案是使用加密主目录之外的任何其他目录。要再次检查此项,请执行以下操作:
mount | grep ecryptfs
并查看是否列出了您的主目录。
如果是这种情况,可以使用home上的其他目录,或者在不使用加密的情况下创建一个新的home目录。显示实际错误和回溯(以及您当时调用的内容)将非常有帮助。此外,IIRC,
httplib2
默认情况下不保存文件;它为您提供了一个内容
对象,您可以对该对象执行任何操作(例如,从URL、响应标题等构建本地文件名,并将内容
保存到该文件中)。这意味着错误将来自您编写的代码,并且可能会以不同的方式写入…Python IOError传递的错误:[Errno 36]文件名太长:'.cache/www.example.com'url超过了文件名限制。我只使用httplib2运行一个“GET”请求,并收到该错误。如果我在主目录之外运行.py文件,没有问题。在一些类似的错误之后,我看到了一个例子,有人因为在一个加密的主目录中而有同样的问题,他除了将py文件移到主目录之外没有其他解决方案。我讨厌这样的想法:解决这个问题的唯一方法是将其移出主目录。好的,问题是缓存文件的文件名太长。将脚本移出主目录不会有帮助;您必须更改其缓存目录。请给我一秒钟时间查看更多详细信息。@DrewK请显示代码。好的,亲爱的,这很有意义。现在看起来非常明显,对ubuntu来说是新的,并且有一些问题。谢谢谢谢你给出了一个明确的答案。不知道我怎么会错过这个!