首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中,什么是“虽然不是EOF”的完美对应

在Python中,什么是“虽然不是EOF”的完美对应
EN

Stack Overflow用户
提问于 2013-03-24 22:25:32
回答 6查看 369K关注 0票数 141

为了在C或Pascal中读取一些文本文件,我总是使用下面的代码片段来读取数据,直到EOF:

代码语言:javascript
复制
while not eof do begin
  readline(a);
  do_something;
end;

因此,我想知道如何才能在Python中简单快速地做到这一点?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-24 22:26:23

循环遍历文件以读取行:

代码语言:javascript
复制
with open('somefile') as openfileobject:
    for line in openfileobject:
        do_something()

文件对象是可迭代的,并在EOF之前产生行。将文件对象用作迭代器时,会使用缓冲区来确保读取性能。

您可以对标准输入执行相同的操作(不需要使用raw_input()

代码语言:javascript
复制
import sys

for line in sys.stdin:
    do_something()

为了完成这幅图,可以使用以下命令完成二进制读取:

代码语言:javascript
复制
from functools import partial

with open('somefile', 'rb') as openfileobject:
    for chunk in iter(partial(openfileobject.read, 1024), b''):
        do_something()

其中,chunk一次最多将包含来自文件的1024个字节,当openfileobject.read(1024)开始返回空字节串时,迭代将停止。

票数 220
EN

Stack Overflow用户

发布于 2013-03-24 22:27:04

打开文件并逐行读取文件的Python习惯用法是:

代码语言:javascript
复制
with open('filename') as f:
    for line in f:
        do_something(line)

该文件将在上述代码的末尾自动关闭( with构造负责这一点)。

最后,值得注意的是,line将保留尾随的换行符。这可以使用以下命令轻松删除:

代码语言:javascript
复制
line = line.rstrip()
票数 19
EN

Stack Overflow用户

发布于 2014-10-27 19:53:57

您可以使用下面的代码片段逐行阅读,直到文件结束

代码语言:javascript
复制
line = obj.readline()
while(line != ''):

    # Do Something

    line = obj.readline()
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15599639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档