读取文件后的Python文件全部读取

时间:2014-04-18 14:26:28

标签: python python-2.7 input

使用python 2-7:

msg = self.infile.read(1500)

我正在从一个可能无限循环内的文件中读取1500条字符, 当文件全部完成后我已经读完了所有会发生什么?我会从一开始就再次阅读吗? (我不想要那个)

有没有一种简单的方法来计算我总共阅读了多少1500B字符串(或最后一个字符串)的数量而没有保存它们?

3 个答案:

答案 0 :(得分:0)

你可以拿一个柜台:

ct = 0
while 1:
    msg = self.infile.read(1500)
    if len(msg) == 0:
        break
    else:
        ct += 1

循环结束后,ct变量将保留您的块数。

答案 1 :(得分:0)

<强>更新

虽然我将在此处添加以下注释,但此处的其他答案更能满足您的要求。

特别添加

if not msg:
  break

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


由于你还没有详细说明为什么要抓住1500 Byte块,我将建议一个替代的每行解决方案。假设self.infile是文件描述符。

msg = [ line for line in self.infile ]

这将为您提供一个列表,其中包含文件中每一行的单独元素,其中索引“0”是第一个,索引“n”(即列表中的最后一个元素)是最后一个。

答案 2 :(得分:0)

您可以使用chunk这样的<{p}}阅读iter

>>> 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

或者您只想知道计数

>>> os.stat('infile').st_size/1500