Kee*_*ker 1 python file-io file
我有一个简单的代码块打开一个文件,然后在for循环运行后关闭文件.
但是它似乎没有释放文件,因为循环下面的以下行并关闭
print os.stat('/root/message').st_size
Run Code Online (Sandbox Code Playgroud)
显示为0.如果我这样做ls -l它会显示文件大小,我可以cat将文件输出并且它具有正确的内容.
这是代码块.
#!/usr/bin/python
import os
objects = { 'dave' : 'builder' , 'fred' : 'cobbler' , 'frank' : 'shoplifter' }
log = open('/root/jam' , 'w')
for bloke in objects:
log.write("%s is a %s \n" % (bloke, objects[bloke]))
log.close
print os.stat('/root/jam').st_size
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
你忘了打电话给这个file.close方法; 添加()不只是引用方法,而是实际调用它:
log.close()
Run Code Online (Sandbox Code Playgroud)
一旦脚本结束,Python就会自动关闭文件,这就是ls -l和cat命令显示大小和文件内容的原因.
您还可以使用该with语句将文件对象用作上下文管理器 ; 一旦with块结束,文件将为您关闭:
import os
objects = { 'dave' : 'builder' , 'fred' : 'cobbler' , 'frank' : 'shoplifter' }
with open('/root/jam' , 'w') as log:
for bloke in objects:
log.write("%s is a %s \n" % (bloke, objects[bloke]))
# with block ends, file is closed for you
print os.stat('/root/jam').st_size
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |