我在python中,有很多方法可以访问文件.
方法1:
fp = open("hello.txt", "w")
fp.write("No no no");
fp.close()
fp = open("hello.txt", "r")
print fp.read()
fp.close()
Run Code Online (Sandbox Code Playgroud)
方法2:
open("hello.txt", "w").write("hello world!")
print open("hello.txt", "r").read()
Run Code Online (Sandbox Code Playgroud)
方法3:
with open("hello.txt","w") as f:
f.write("Yes yes yes")
with open("hello.txt") as f:
print f.read()
Run Code Online (Sandbox Code Playgroud)
使用这些中的每一个都有特定的优势吗?
我知道的东西:
Kat*_*iel 10
你应该使用第三种方法.
在编程中有一个共同的模式,在哪里使用你设置的一些对象,运行你的代码,然后再把它拆掉.文件句柄就是一个例子:您必须打开文件,运行代码,然后关闭文件.这最后一个不是可选的 - 操作系统知道你已经完成了它,并且Python要从IO缓冲区中清除所有数据,这一点很重要.
现在,CPython是一种引用计数语言.这意味着它计算了多少代码"了解"给定对象,因此当该计数变为零时,它可以清理所述对象并在内存中重用其空间.在方法2中,文件对象的引用计数变为零,这允许Python清理它.文件对象的清理方法也会关闭它们.但是,您通常不应该依赖于此 - 引用计数是Python标准版本的实现细节,并且无法保证您运行程序所使用的任何内容都将执行相同的操作.这就是你不应该使用方法2的原因.
方法1是更好,因为你明确地关闭文件-只要你到达的.close()函数调用!如果在该代码块的中间抛出异常,则close不会到达,并且不会显式关闭该文件.所以你应该将中间代码包装在一个try... finally块中.
因此,最好的方法3:您使用with的语句-封闭的惯用方式.close在一个finally块-关闭文件,所以你不必担心额外的语法绒毛try... except.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |