一开始,它有助于防止您在尝试中引入的问题…终于…例如。

结构化方式,如果在尝试打开该文件时抛出异常,那么永远不会将打开的文件绑定到名称f,导致finally子句中的NameError(如果f从未在范围内绑定) )或完全意外的东西(如果有的话)。

正确的结构(相当于)是:

f = open(my_file)

try:

do_stuff_that_fails()

finally:

f.close()

(注意 – 如果你没有什么可做,不需要一个except子句)。

你的第二个例子同样是错误的,应该如下结构:

try:

f = open(my_file)

try:

do_stuff_that_fails()

except EXPECTED_EXCEPTION_TYPES as e:

do_stuff_when_it_doesnt_work()

finally:

f.close()

except (IOError, OSError) as e:

do_other_stuff_when_it_we_have_file_IO_problems()

第二个是(如另一个答案所述),你不能忘记调用f.close()。

BTW,术语是“上下文管理”,而不是“资源管理” – with语句管理上下文,其中一些可能是资源,而其他一些可能不是资源。例如,它也与十进制一起使用以为特定的代码块建立十进制上下文。

最后(回复你对上一个答案的评论),你不应该依赖refcount语义来处理Python中的资源。 Jython,IronPython和PyPy都具有非引用语义,没有什么可以阻止CPython以其他方式进行(尽管在不久的将来不太可能)。在紧密循环(例如os.walk)中,如果依赖于refcount语义的代码在具有不同行为的VM上运行,则非常容易运行文件句柄。

python打开一个文件-在“Python”中如何“尝试/抓住”打开一个文件?相关推荐

  1. python文件名按数字排序_用Python按照文件的名字中包含的数字排序出文件

    使用Python按照文件的名字中包含的数字排序出文件 原来的样式: file_list = ['第10周成绩.xlsx', '第11周成绩.xlsx', '第12周成绩.xlsx', '第13周成绩. ...

  2. GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法

    更多信息请关注 个人网站 一.背景 在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场 ...

  3. python打开并读取csv文件_!python3中使用使用read_csv( )读取csv文件,文件路径中含有中文,无法读取怎么处理?...

    python3如何根据csv文件的列的内容,自动建数据库表 你好,csv格式的和excel格式是差不多的, 下面是读取excel的一些函数,希望帮到你: # -*- coding: cp936 -*- ...

  4. python一次性读取整个文件-python-文件中的行是否读取整个文件

    您不能确定.您所知道的只是它一次将返回一行. Python Standard Library documentation说: 为了使for循环成为遍历文件行的最有效方法(一种非常常见的操作),next ...

  5. linux vi打不开文件,在Linux中使用vi/vim打开一个文件时出现的的问题

    1.想想如何vim/etc/profile会出现这种情况,并解决掉这些问题 图一: 图二: 原因: 第一张:由于vi /etc/profile还没有编辑完成,保存退出,突然断电或其他原因导致编辑窗口关 ...

  6. 手机如何打开c语言文件类型,Android中如何使用代码打开各种类型的文件

    介绍 本篇用于介绍Android中如何打开各种类型的文件,如:音乐文件(mp3.wav.ogg等).视频文件(3gp.mp4等).图片文件(jpg.png.gif等).安装包(apk).文档(txt. ...

  7. dwcs6无法运行php文件,解决电脑中dreamweaver软件无法打开的问题

    Dreamweaver是一款网页编辑软件,它能支持我们使用图形化界面进行编辑,即使不知道代码是如何操作的用户也可以使用这款软件制作一些简单的网页!由于最近有很多的用户都向小编抱怨,声称自己电脑中安装了 ...

  8. java如何解压rar文件怎么打开_如何在java中实现对zip和rar文件的解压

    如何在java中实现对zip和rar文件的解压 关注:101  答案:1  mip版 解决时间 2021-01-26 10:50 提问者芣①樣哋羙莮 2021-01-25 22:44 如何在java中 ...

  9. inux中,如何把一个目录及其子目录中的读写权限交给一个普通用户!

    1.更改所有者:chown -R 用户 目录2.更改权限:chmod -R 755 目录 linux ls和 ll 命令 ll 命令列出的信息更加详细,有时间,是否可读写等信息 ll命令和ls -l命 ...

最新文章

  1. 【FFmpeg】使用过的命令汇总(持续更新中...)
  2. eclipse调试一个struts2例子时遇到的一些问题总结
  3. 使用libsvm对MNIST数据集进行实验
  4. JSunpack-n模拟WireShark拦截文件传输
  5. R pdf大小_「福昕PDF助手」12个常用的Word快捷键,一看就会,你值得拥有!
  6. python压缩教程_Python压缩模块zipfile实现原理及用法解析
  7. 【Liunx】manjaro双系统安装(折腾)教程
  8. 2个网卡配置相同ip 华为交换机_【跟着做】华为网络设备配置
  9. numpy 常用api(二)
  10. 2440/6410+minitools+superboot烧写裸机新方法!
  11. 支付宝 alipay.fund.trans.uni.transfer(单笔转账接口)功能整合
  12. ih5怎么切换下一个页面_ih5快速入门(二)
  13. 八、PyQt5绘图技术
  14. 蒙特利尔大学科研工作者:详细对比人类视觉系统与卷积神经网络(CNN)的联系和区别...
  15. 作业20180925-2 功能测试
  16. Linux: fPIC与 pie 区别
  17. 日志工具类——Log
  18. 共享特定特征转移的跨模态人员重识别
  19. 关于公网摄像机直播公网视频直播的基本思考方法
  20. 花老湿学习OpenCV:霍夫线变换与直线检测

热门文章

  1. Android 三种方式实现自定义圆形页面加载中效果的进度条
  2. DevExpress 动态换肤
  3. 【转载】变量的存储类别
  4. Struts2中的拦截器与过滤器学习
  5. 解决无法连接到远程SqlServer 2005 Express服务器的问题
  6. python matplotlib散点图-python的matplotlib散点图
  7. python与excel的应用-Python利用pandas处理Excel数据的应用
  8. python职能-最受欢迎的10家互联网公司揭秘Python薪资!
  9. python从入门到精通书-Python从入门到精通(资源汇总)
  10. python使用界面-用python编写简单ui界面窗口