python中打开的文件描述符

2024-01-12

当我在 IPython3 shell 中使用这段代码时

 >>>data = open('file').read()

然后检查打开的文件描述符:

 lsof | grep file

我发现空列表

当我使用这个时:

>>>open('file')

lsof显示两个项目。问题是为什么第一个操作关闭 fd 而第二个操作却没有?我认为垃圾收集器必须删除没有引用的文件对象。

当我重新分配值时,我知道解释器中的“_”var

>>>111
>>>_
111

但描述符保持开放状态。 当我重复

>>>open('file')

n次有2*n个打开的描述符


在第二个示例中,文件句柄由交互式解释器变量保留_,它允许您访问最后计算的表达式。如果您计算另一个表达式,例如1+1,您会注意到该文件不再由lsof一样开放。

正如 Mike Byers 所指出的,这种行为是 CPython 特有的,甚至是文件对象使用的精确环境。要确保无论代码如何执行,文件都会关闭,请使用with陈述:

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

python中打开的文件描述符 的相关文章

随机推荐

  • Android 中的文件浏览器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP 中的 INET_ATON() 和 INET_NTOA()?

    我想将 IP 地址存储在数据库中 但我还需要在整个应用程序中使用它们 我读到关于使用INET ATON and INET NTOA 在我的 MySQL 查询中 从 IP 地址中获取 32 位无符号整数 这正是我想要的 因为它将比使用 cha
  • 每月累计总数和 Postgresql

    我正在尝试计算 dellstore2 数据库的累计用户数 看看这里的答案和其他论坛 我用了这个 select date trunc month orderdate sum count distinct customerid over ord
  • 无法插入断点。低值地址

    我正在尝试调试这个简单的 C 程序 include
  • Facebook Javascript,如何检测用户是否是我的 Facebook 页面的粉丝?在我的网站上?

    我有以下 JS 代码 该代码的目的是首先获取用户的 facebook id 然后使用 FQL 对照我的页面 ID 检查该 id 并确保该用户是粉丝 我遇到的问题是 代码真正起作用的唯一时间是我使用自己的个人 Facebook 个人资料登录时
  • 具有给定厚度、位置和半径的拉环。 (Java2D)

    我需要画一个具有给定厚度的环 看起来像这样 中心必须是透明的 这样它就不会覆盖之前绘制的形状 或其他戒指 我尝试过这样的事情 g is a Graphics2D object g setColor Color RED g drawOval
  • 验证来自 Spring RESTful 资源服务器的 OAuth 2.0 访问令牌

    我想保护我的 Spring RESTful 后端 一种方法 正确的 是使用 OAuth 2 0 如下所示 http www youtube com watch v 8uBcpsIEz2I http www youtube com watch
  • Android 中按钮的单击和双击

    在我的应用程序中 我有一个按钮 单击和双击按钮后将执行单独的操作 我怎样才能做到这一点 谢谢 嗯 很简单 只需覆盖即可 OnClickListener 的 onClick 方法 public abstract class DoubleCli
  • 使用 Android Jetpack 导航时如何禁用导航图标

    当您向导航架构注册工具栏时 它将创建一个箭头 允许您在您所在的片段上弹出 在一些基本级别的片段上 我不想有汉堡菜单图标或箭头 而是自定义视图对象 如何从视图中禁用后退按钮 我尝试过手动禁用 但很难找到如何使用导航拱门来管理它 val sup
  • 如何访问控制台应用程序中的资源?

    我如何获得访问权限 Properties Resources在控制台应用程序中 这是为了使用解决方案附加的资源文件 Here s exactly what I can see 第一个语法错误不是我关心的 只能使用赋值 调用 自增 自减和新对
  • JavaScriptSerializer 可以排除具有 null/默认值的属性吗?

    我正在使用 JavaScriptSerializer 来序列化一些实体对象 问题是 许多公共属性包含 null 或默认值 有没有办法让 JavaScriptSerializer 排除具有 null 或默认值的属性 我希望生成的 JSON 不
  • 如何使用 sqlite 在 pytest 中启用外键检查

    我有一个 django 项目 其中的测试在我调用时运行py test 但我最近注意到它不检查外键约束 我怎样才能让它检查外键约束 显然 外键约束直到 sqlite 3 才成为可能 https sqlite org foreignkeys h
  • 如何在 OpenGL (ES) 中将非 2 幂纹理显示为精灵而不进行拉伸?

    我想绘制一个任意大小的精灵作为 png 比如说 56 宽 x 30 高之类的完全疯狂的东西 任一维度都不是 2 的幂 另外 我可能想绘制另一个 72 宽 x 33 高的不同精灵 指出这一点是因为这里不接受任何 技巧 我需要处理一般情况 所以
  • 实体框架 6:找不到服务器或无法访问服务器

    我正在跟进 本教程 https msdn microsoft com en us data jj193542 aspx 我正在尝试在 C 控制台应用程序中创建 EF 数据库 但是 即使我完全按照教程中的方式执行所有操作 它也会失败 db B
  • 如何将txt文件中的图像像素转换为十六进制颜色代码?

    如何只保留突出显示的部分 运行它awk在行号大于 1 的每一行打印第三个字段 awk NR gt 1 print 3 YourFile 574E3E 2E67FD 40A254
  • 如何从固定装置远程加载数据

    使用 GAE 上的 Django nonrel 部署后如何将固定装置加载到服务器 我可以通过本地化来完成 python manage py loaddata 夹具名称 但如何在 appspot com 上已部署的应用程序上执行此操作 我相信
  • 如何清理 Rails 中的 sql 片段

    我必须清理 SQL 查询的一部分 我可以做这样的事情 class lt lt ActiveRecord Base public sanitize sql end str ActiveRecord Base sanitize sql AND
  • 在 Mathematica 中操作自定义表格表示

    考虑以下数据示例 data a b c d e 1 2 3 4 5 11 12 13 14 15 21 22 23 24 25 以及以下函数来生成自定义表格表示 并且您可以参考Mr Wizard 用于可定制表格表示的广泛解决方案 https
  • Pandas Dataframe 或 C#.NET 中的类似数据框

    我目前正在致力于实现早期用 Python 构建的 Gurobi 线性程序模型的 C 版本 我有许多 CSV 文件 我从中导入数据并创建 pandas 数据帧 并且从这些数据帧中获取列以创建我在线性程序中使用的变量 使用数据帧创建变量的Pyt
  • python中打开的文件描述符

    当我在 IPython3 shell 中使用这段代码时 gt gt gt data open file read 然后检查打开的文件描述符 lsof grep file 我发现空列表 当我使用这个时 gt gt gt open file l