出现 gdbm 错误:(13,'权限被拒绝') — 尽管 posix 权限看起来没问题

2024-03-02

我正在 python 2.7.6 中使用 shelve 进行缓存计算,并且遇到了所描述的问题HERE https://stackoverflow.com/q/35771816/4038337对于我制作并实施的搁置文件建议的解决方案 https://stackoverflow.com/a/35782184/4038337在合并文件的函数中other进入文件target:

... # target and other are strings
# Loads the gdbm module, as suggested
mod = __import__("gdbm")
# Open target for modifications
tar = shelve.Shelf(mod.open(target, 'c', 0666)) # THROWS EXCEPTION
# Open other for reading
oth  = shelve.Shelf(mod.open(other, 'r'))
...

这两个文件是归我所有,记录在本地文件系统并将 posix 权限设置为0666,或者等价地,-rw-rw-rw-在我的 Linux Mint 盒子里,这样已经进行了明显的检查:

$ ls -l
-rw-rw-rw- 1 myusr mygrp 11694080 Sep 17 21:24 cache
-rw-rw-rw- 1 myusr mygrp 12189696 Sep 17 21:23 cache.0

Here, cache is the target, and cache.0 is the other文件。当前工作目录归我所有并具有权限0775,我可以使用以下命令创建文件touch, cp等等,随意,没有问题,我什至设置了我的umask to 0000,因此创建新文件0666,或者等价地,-rw-rw-rw-权限。

我什至根据其实际文件权限与 gdbm.open() 调用中的权限进行了匹配文档 https://docs.python.org/2.7/library/gdbm.html#gdbm.open;然而,无济于事。

Update:通过运行 python 代码sudo,即具有超级用户权限时,错误发生在同一条线;但是有不同的消息:gdbm error: Bad magic number!这很奇怪,因为使用(看似)较低级别的模块(gdbm相对于shelve)正是绕过了数据库类型检测。

更新#2: 跑步python whichdb.py关于文件返回dbhash;但是,将模块更改为dbhash加载代码仍然给出以下错误:

bsddb.db.DBAccessError: (13, 'Permission denied')

当以用户身份运行时,但是

bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- BDB0210 ././merge-cache.py: metadata page checksum error')

当使用 sudo 运行时;merge-cache.py是我的代码的名称。

讨论了这个新错误here https://stackoverflow.com/q/15958917/4038337,与 python 版本有关,但是(i)我的 python 版本与该帖子中的版本不同,并且(ii)创建文件并稍后使用samepython 的版本。

这个答案 https://stackoverflow.com/a/15577654/4038337表示shelve对于大型数据库来说会被“浪费”,但我报告的问题也发生在较小的数据库上。

问题:如何使用 python-2.7.6 打开这些搁置文件? (升级 python 不是一个选项)。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

出现 gdbm 错误:(13,'权限被拒绝') — 尽管 posix 权限看起来没问题 的相关文章

随机推荐

  • 使 Ruby 字符串不可变

    需要使我的程序中的某些 Ruby 字符串不可变 最好的解决方案是什么 写一个包装器String class The freeze方法对我不起作用 我看到freeze不允许您解冻该对象 以下是我的情况 我有一个类将字符串传递给回调 该字符串恰
  • PHP for 循环中允许的内存大小耗尽

    当我尝试在 PHP 中操作一个巨大的数组并将结果作为响应返回时 我遇到了致命错误HTTP POST 请求 允许的内存大小 536870912 字节已耗尽 我已经尝试过设置ini set memory limit 1 为了看看我是否得到结果
  • 如果绑定源为空,如何为图像设置默认源?

    我正在使用绑定作为源Image控制
  • 在eclipse中使用jsr305注释Findbugs没有发现bug

    我一直在尝试将 jsr 305 注释与 Findbugs 一起使用 特别是 CheckForNull 注释 它可以避免我刚刚发现的向客户报告的错误 我已将 jsr305 jar 和annotations jar 添加到我的构建路径中 但 f
  • 安排大 ETA 的 celery 任务

    我目前正在使用 celery 尝试未来的任务ETA http docs celeryproject org en latest userguide calling html eta and countdown功能和 Redis 代理 使用
  • 减少 Mercurial 中的存储库大小

    当我的团队使用 Mercurial 存储库中的源代码处理给定项目时 存储库的大小显然在增长 因此 通过网络克隆存储库变得越来越慢 是否有任何技术可用于删除较旧的提交或减小存储库的大小 以使克隆操作在慢速网络上更快 我们使用 Tortoise
  • 查找列表中最流行的单词

    我有一个单词列表 words all awesome all yeah bye all yeah 我想获得一个元组列表 3 all 2 yeah 1 bye 1 awesome 每个元组在哪里 number of occurrences w
  • Rails 中如何让 Low-Level caching 与 Association caching 协同工作?

    我目前正在开发一个使用 Rails 5 的项目 我想提高性能 所以我决定使用低级缓存 如下所示 class User lt ApplicationRecord has one profile def cached profile Rails
  • 当我尝试上传视频时,Youtube API v3 返回 401

    我使用 YouTube 的 ServiceAccount 上传器 我使用 Youtube API v3 我有简单的控制台应用程序 可将视频上传到 youtube String serviceAccountEmail var certific
  • ParNew gc 会阻止世界吗?

    我看到 GC 输出如下 2010 12 10T16 00 44 942 0800 1443 562 GC 1443 562 ParNew 201856K gt 17318K 201856K 0 0352970 secs 2113334K g
  • 如何在java中使用dd-mm-yyyy格式将字符串格式化为日期[重复]

    这个问题在这里已经有答案了 我需要一些支持 我希望将变量字符串转换为日期 变量日期的格式应为 dd MM yyyy import java util Date String a 2022 05 12 Date b should be dd
  • mapActivity 中出现 NoClassDefFoundError

    我的地图应用程序中出现此错误 您知道出了什么问题吗 我已经检查过 该包在我的 java 文件中是正确的 而且我已将谷歌地图的使用库放入我的应用程序标签中的 manifest xml 中 请帮忙 我花了几个小时来解决它 确保您已输入
  • Azure API 管理服务中的静态 IP 地址

    我已经做了一些谷歌搜索 但无法得到确认的答案 Azure API 管理服务是否提供静态 IP 地址 如果没有 我该如何配置 我问的原因是因为我的本地服务器仅接受来自白名单 IP 地址的请求 因此我们需要来自 Azure API 管理的请求的
  • mingw 链接器找不到 PathAppend

    当我尝试编译以下内容时 include
  • 自定义设计EditText

    我有定制设计EditText 搜索页面 xml
  • 如何在 Redux 中处理两个连续且依赖的异步调用?

    我通过调用操作异步获取帖子列表fetchPosts从一个组件开始componentDidMount 我希望 一旦相关减速器 更新状态 收到并处理该请求 就调用另一个操作fetchPostsMetaData 包含刚刚收到的帖子 id 的数组
  • 像 Google Play 商店一样折叠工具栏

    我想实现一个像 google Play 商店一样的折叠工具栏 我已经实现了一些功能 但这仅适用于纵向屏幕 这是我能够执行的操作的屏幕截图示例 现在我想做的是 当我将设备方向更改为景观模式时 它应该看起来完全像这样 所以我的主要问题是如何处理
  • 如何处理大型 git 存储库?

    我目前正在使用 git 来构建大型存储库 大约 12 GB 每个分支的大小为 3 GB 该存储库包含大量二进制文件 音频和图像 问题是克隆和拉取可能需要很多时间 特别是 解决增量 步骤可能非常非常长 解决此类问题的最佳方法是什么 我尝试删除
  • 如何在javascript中检查异步加载的脚本是否已完成加载

    使用 javascript 异步下载另一个 javascript 文件 我知道这可以通过在页面上插入一个新的脚本标签来完成src属性设置为文件 url 脚本下载完成后 我还需要运行一些代码 我一直在使用yepnope http yepnop
  • 出现 gdbm 错误:(13,'权限被拒绝') — 尽管 posix 权限看起来没问题

    我正在 python 2 7 6 中使用 shelve 进行缓存计算 并且遇到了所描述的问题HERE https stackoverflow com q 35771816 4038337对于我制作并实施的搁置文件建议的解决方案 https