首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一次又一次地读取Python文件

一次又一次地读取Python文件
EN

Stack Overflow用户
提问于 2014-04-18 14:26:28
回答 3查看 116关注 0票数 1

使用python 2-7:

代码语言:javascript
运行
复制
msg = self.infile.read(1500)

我正在读取文件中的1500字节片段,在一个可能无限循环的中,当文件全部完成时,我已经读取了它,会发生什么呢?我从一开始就会再看书吗?(我不想那样)

有没有一种简单的方法可以计算出我总共读过多少个1500 B字符串(或者最后一个字符串更少),而没有保存它们?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-18 14:33:42

你可以拿着柜台:

代码语言:javascript
运行
复制
ct = 0
while 1:
    msg = self.infile.read(1500)
    if len(msg) == 0:
        break
    else:
        ct += 1

循环结束后,ct变量将保存块数。

票数 0
EN

Stack Overflow用户

发布于 2014-04-18 14:41:19

更新

虽然我会留下下面的笔记,我在这里添加,其他答案在这里更好地满足您的要求。

具体添加

代码语言:javascript
运行
复制
if not msg:
  break

当到达EOF时,进入循环将负责停止无限循环。

由于您还没有详细说明为什么要抓取1500字节块,所以我将建议一种每行解决方案。假设self.infile是文件描述符。

代码语言:javascript
运行
复制
msg = [ line for line in self.infile ]

这将给出一个列表,文件中的每一行都放在一个单独的元素中,索引'0‘是第一个元素,索引'n’(即列表中的最后一个元素)是最后一个元素。

票数 0
EN

Stack Overflow用户

发布于 2014-04-18 15:07:55

您可以像这样使用chunk阅读iter

代码语言:javascript
运行
复制
>>> with open('infile') as infile:
...     for chunk in iter(lambda:infile.read(1500), ''):
...         if len(chunk) == 1500: # skip if size of chunk is less than 1500
...             print chunk # you can deal with `chunk` and count it here

或者你只想知道count

代码语言:javascript
运行
复制
>>> os.stat('infile').st_size/1500
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23156139

复制
相关文章

相似问题

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