Python 核心编程笔记_Chapter_3 Note_4 创建python文件(练习文件操作)

题目里面有问题....少了第6行的内容,oh my godness....

不过自己添加以后就ok了,自己注释了下。

这里记录几个个新知识点:

os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n'Linux使用'\n'而Mac使用'\r'

os.path.exists检查当前路径下面,是否已经有存在的文件名了,下面的截图里面可以看到。

file.write(str)的参数是一个字符串,就是你要写入文件的内容.
file.writelines(sequence)的参数是序列,比如列表,它会迭代帮你写入文件。


核心技巧:使用局部变量替换模块变量
类似 os.linesep 这样的名字需要解释器做两次查询:(1)查找os 以确认它是一个模块,
(2)在这个模块中查找 linesep 变量。因为模块也是全局变量, 我们多消耗了系统资源。如
果你在一个函数中类似这样频繁使用一个属性,我们建议你为该属性取一个本地变量别名。 变
量查找速度将会快很多--在查找全局变量之前, 总是先查找本地变量。 这也是一个让你的
程序跑的更快的技巧: 将经常用到的模块属性替换为一个本地引用。代码跑得更快,而也不用
老是敲那么长的变量名了。在我们的代码片段中,并没有定义函数,所以不能给你定义本地别
名的示例。不过我们有一个全局别名,至少也减少了一次名字查询

以上这段话是作者写的,他的意思是,你将os.linesep赋予一个变量,可以加快速度,因为os.linesep是全局变量,而且是2个,这样造成调用速度变慢,直接赋予一个局部变量ls的话,会加快运行速度。




创建文件完了,我们再看一下读取文件。

脚本的剩余部分展示了一种新的Python 结构, try-except-else 语句。try 子句是一段
我们希望监测错误的代码块。 在第10-11 行代码,我们尝试打开用户输入的文件。except 子
句是我们处理错误的地方。在12-13 行,我们检查 open() 是否失败-通常是 IOError 类型
的错误。
最后,14-18 行的else 子句在try 代码块运行无误时执行。我们在这儿将文件的每一行
显示在屏幕上。注意由于我们没有移除代表每行结束的行结束符,我们不得不抵制 print 语句
自动生成的行结束符 --通过在print 语句的最后加一个逗号可以达到这一目的。 第18 行关
闭文件,从而结束这段脚本。

最后要讲的一点是关于使用 os.path.exists() 和异常处理:一般程序员倾向于使用前者,
因为有一个现成的函数可以检查错误条件 -- 并且很简单, 这是个布尔函数, 它会告你“是”
还是“不是”。 (注意,这个函数内可能已经有异常处理代码)。那你为什么还要重新发明一

个轮子来干同样一件事?异常处理最适用的场合,是在没有合适的函数处理异常状况的时候。
这时程序员必须识别这些非正常的错误,并做出相应处理。对我们的例子来说, 我们能够通过
检查文件是否存在来避免异常发生, 不过因为有可能因为其它原因造成文件打开失败,比如缺
少权限,网络驱动器突然连接失败等等。从更安全的角度来说, 就不应该使用类似
os.path.exists() 之类的函数而是使用异常处理, 尤其是在没有合适函数的情况下更应如此。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值