在python中检测并删除锁定的文件

2024-02-22

我想在 Unix 上使用 python 检测文件是否被锁定。删除该文件是可以的,假设它有助于检测该文件是否被锁定。

该文件最初可能是由另一个进程独占打开的。文档似乎表明,如果文件被锁定, os.unlink 不一定会返回错误。

Ideas?


检查文件是否被锁定的最佳方法是尝试锁定它。这fcntl模块 http://docs.python.org/library/fcntl.html将在 Python 中执行此操作,例如

fcntl.lockf(fileobj.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)

如果文件已被锁定,这将引发 IOError;如果没有,您可以致电

fcntl.lockf(fileobj.fileno(), fcntl.LOCK_UN)

才能再次解锁。

请注意,与 Windows 不同,在 Unix 中打开文件进行写入不会自动为您提供独占锁。另请注意,fcntl 模块在 Windows 上不可用;你需要使用os.open http://docs.python.org/library/os.html#os.open,这是一个不太友好但更便携的界面(并且可能需要再次重新打开文件)。

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

在python中检测并删除锁定的文件 的相关文章

随机推荐

  • 通过socket发送wav文件

    我正在尝试通过套接字发送 wav 文件 我收到错误 TypeError must be string or buffer not instance waveFile wave open WAVE OUTPUT FILENAME rb my
  • Umbraco 7 SEO 标签

    我想在 Umbraco 中创建 SEO 标签的网站 我想知道它是如何做到的 有没有最佳实践文件或建议 我不是 SEO 专家 但希望下面的代码片段可以帮助您入门 Metadata 在页面上我添加了一些属性 如果您按照文档类型 通过继承或通过组
  • 如何处理 Wicket 自定义模型中抛出的异常?

    我有一个带有自定义模型的组件 扩展 wicket 标准模型类 当 Wicket 调用时 我的模型从数据库 Web 服务加载数据getObject 此查找可能会因多种原因而失败 我想通过在带有该组件的网页上显示一条不错的消息来处理此错误 最好
  • 如何使用宏来收集变量名称?

    我想简化以下内容 class A int a int b int c std vector
  • 使用 React Hooks 出现“太多重新渲染”错误

    我在这里遇到了 React Hooks 的困扰 我在网上查找 但无法弄清楚如何使这些示例适应我的代码 我有以下组件会触发 太多重新渲染 错误 const EmailVerification gt const showMessage setS
  • symfony2:找不到AppKernel中包含的类

    我有这个app AppKernel
  • Mongo shell 无法连接到 Azure CosmosDB

    我无法在 Mac 下从 MongoDB Shell 连接到 Azure CosmosDB mongodb api mongo host XXX documents azure com port 10255 username XXX pass
  • 需要 Underscore.js 中 _.bindAll() 函数的解释

    我一直在学习一些backbone js并且我见过很多例子 bindAll 用来 我已经阅读了整个backbone js和underscore js文档页面 试图了解它的作用 但我仍然对它的作用非常模糊 这是下划线的解释 bindAll ob
  • docker swarm中容器之间的通信

    我想在 docker swarm 模式下通过 WebSocket 连接在主节点和工作节点之间进行通信 工作节点应该已到达主节点 连接失败 另外 我想通过 http 从我的主机连接到主节点 连接也失败 这是我的docker compose y
  • 一对多关系删除

    我有一对多的关系 class GameSystem Object dynamic var gameSystemName class games Object dynamic var gameSystemName gameSystemName
  • 有没有办法将“if case”语句编写为表达式?

    考虑这段代码 enum Type case Foo Int case Bar Int var isBar Bool if case Bar self return true else return false 真恶心 我想写这样的东西 en
  • 两个 beta 分布的乘积

    假设我有两个随机变量 X 1 1 Y 2 2 我想计算 Z XY 的分布 随机变量的乘积 With scipy 我可以通过以下方式获取单个 Beta 版的 pdf from scipy stats import beta rv beta a
  • “完成”按钮未触发 Xamarin Entry 上的“完成”事件

    我添加后iOS 上的 完成 按钮 https developer xamarin com recipes cross platform xamarin forms ios add done to keyboard 在 Xamarin For
  • 跨版本序列化和反序列化 .net 对象的最佳实践

    使用 NET XML 序列化程序将对象序列化到数据库 该对象可能会随着时间的推移而发生变化 因此数据库中同时存在多个版本 有关构建代码的最佳方法的任何建议 以便您仍然可以将此对象反序列化为最新版本 界面 地图 手动序列化等 序列化对象中有一
  • 如何在Linux中设置CLASSPATH让java找到jar文件?

    在Linux下我尝试运行一个jar文件 如下所示 java jar plantuml jar testdot 当有CLASSPATH设置为以下任意一项 文件位于 home user plantuml jar export CLASSPATH
  • LabelPropagation - 如何避免被零除?

    使用时标签传播 http scikit learn org stable modules generated sklearn semi supervised LabelPropagation html 我经常遇到这个警告 恕我直言 这应该是
  • 在 flutter 中使用 new 关键字[重复]

    这个问题在这里已经有答案了 最近开始关注flutter优达学城课程 https classroom udacity com courses ud905在尝试创建基本应用程序时 我遇到了一些我不清楚的事情 添加小部件时 我注意到同时执行这两项
  • Jquery:将ajax调用的值返回给调用者函数?

    我试图从函数返回 ajax 调用返回的值 但它只返回 未定义 如果 ajax 调用发出警报 响应 它将返回正确的值 这是代码 我做错了什么 insertCandidate live click function e var ids this
  • 复杂的SQL查询建议请

    我有三个表 其架构如下 Table Apps ID bigint USERID Bigint START TIME datetime 1 13 2013 05 03 04 42 55 2 13 2013 05 12 06 22 45 3 1
  • 在python中检测并删除锁定的文件

    我想在 Unix 上使用 python 检测文件是否被锁定 删除该文件是可以的 假设它有助于检测该文件是否被锁定 该文件最初可能是由另一个进程独占打开的 文档似乎表明 如果文件被锁定 os unlink 不一定会返回错误 Ideas 检查文