以下两种方法逐行读取文件的Pythonic方法是什么?
with open('file', 'r') as f:
for line in f:
print line
Run Code Online (Sandbox Code Playgroud)
要么
with open('file', 'r') as f:
for line in f.readlines():
print line
Run Code Online (Sandbox Code Playgroud)
还是有什么我想念的?
g.d*_*d.c 11
文件句柄是它们自己的迭代器(具体来说,它们实现了迭代器协议)
with open('file', 'r') as f:
for line in f:
# code
Run Code Online (Sandbox Code Playgroud)
是首选用法. f.readlines()返回一个行列表,这意味着将整个文件吸收到内存中 - >通常不明智,特别是对于大文件.
应该指出的是,我同意上下文管理器值得的观点,并且在我的代码示例中包含了一个.
在你提出的两个中,第一个是推荐的练习.正如评论中所指出的,任何不使用上下文管理器的解决方案(如下所示)意味着文件保持打开状态,这是一个坏主意.
留下悬空文件句柄的原始答案不应该被遵循
但是,如果f除了阅读这些行之外你不需要任何其他目的,你可以这样做:
for line in open('file', 'r'):
print line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4778 次 |
| 最近记录: |