python中涉及到文件的程序,为什么close()函数是必须的?

aipuduo 2015-06-21 02:30:42
我下面这个程序



假如我不加16行和17行,那么14行就打印不出来,只有加了之后才可以,为何?

还有,我发现,把16行和17行写在14行的前面,结果和原程序是一样的,好奇怪
...全文
2878 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckc 2018-07-16
  • 打赏
  • 举报
回复
不加close,已经打开的文件就没有关闭 不过程序退出的时候会自动关闭打开的文件,所以有的时候不关也没关系 当然,好的习惯是及时关闭,否则大程序会出一些古怪的错误
doumi_sunny 2018-07-15
  • 打赏
  • 举报
回复
建议楼主学习的时候,看一下每个函数/方法的用法。
看了write的用法,就知道第9行为啥需要了
曾经被狼咬 2018-07-04
  • 打赏
  • 举报
回复
python3.6里面已经没有这种现象,我刚才实验了一下,没有文档关闭的语句也可以正常的写进目标文档里面,并且加入输出语句无论什么位置都可以正常打印出来。
你这个问题可以参照一下5楼的朋友说的。
曾经被狼咬 2018-07-04
  • 打赏
  • 举报
回复
你这个应该是笨方法学python里面的例子吧。

这段代码的意思就是把一个文件的内容copy到另一个文件中。
按照我们正常的思路,需要先将一个文件的内容拷贝一下才能到另一个文件去黏贴。
而程序也是这样的,
需要先打开源文件,然后读取里面的内容,然后再打开目标文件,再写入到里面,这才是这个程序的全部流程。
所以你第九步的意思就是 获取这个文本的文本对象。

笨方法学python里面有一个很好的学习方法,也是前面一部分的例子里作者都会提到的一句话,就是给每行代码都加上注释,这样可以有助于你理解你的程序。
Sue__Sun 2018-01-25
  • 打赏
  • 举报
回复
发现即使没有最后两行,内容也是可以写进去的,但这种短小文本的写入是不是没有多大影响,大文本的写入就必须考虑到呢? 觉得加上最后两行还是一个好习惯吧
secsilm 2017-06-25
  • 打赏
  • 举报
回复
建议使用上下文管理器with语句,更方便
余晖下的少爷 2017-06-23
  • 打赏
  • 举报
回复
其实就是 你不关闭文件的话 它只写进缓存区,不进去文件。
sprawling 2016-02-29
  • 打赏
  • 举报
回复 1
把文件想象成信件就可以了, 打开信封才能取出信纸, 把信纸放入信封还要封好,不然随时可能掉出来.
莫谈国事 2016-02-28
  • 打赏
  • 举报
回复 1
如果没有close(),写入的内容可能会存在缓冲区中,并没有真正的写入文件里。
6facebeast 2016-02-23
  • 打赏
  • 举报
回复
因为你操作完以后, close()相当于关闭文件并保存文件 ,如果没有close(),就相当于你的操作就是失败的
张余歌 2016-02-22
  • 打赏
  • 举报
回复
缓存问题,同上
庚武讲堂 2015-06-22
  • 打赏
  • 举报
回复
最新版的python已经没有这种表现,可以不要这两句,当然加上才是完善的代码,IO操作一般都是有缓存的,不关闭句柄,文件内容还在缓存。 #out_file.close() #in_file.close() 第9行读文件内容到字符串;16、17行与14行的顺序无关紧要,一个是针对标准 IO,一个是对文件IO。
ForestDB 2015-06-21
  • 打赏
  • 举报
回复
你有个文件了,你不读它的内容,你想干嘛?
aipuduo 2015-06-21
  • 打赏
  • 举报
回复
大家只用回答“为什么第9行是必须的”
aipuduo 2015-06-21
  • 打赏
  • 举报
回复
好像是我自己搞错了
aipuduo 2015-06-21
  • 打赏
  • 举报
回复
还有,为什么第9行是必须的

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧