python一次读1000直到文件结束?

时间:2013-10-26 16:47:11

标签: python file-io

我一直在研究将信息发送到服务器的python项目,虽然我发现了一些很好的代码来读取文件并发送它,但我只能立即发送整个文件。我希望能够一次读取1000个字符,然后循环直到文件结束。我确信这很容易,但我不确定在哪里改变我一直在做的事情来实现它。这也可能是由于对阅读方法不熟悉,但我正在研究它,而不是找到任何已经为我澄清的信息。这就是我正在使用的:

with open(localFileTT, 'rb', 0) as f: #open the file 
    for fstr in f:
        str.encode(fstr)
        print(fstr)
        if 'str' in fstr:
            break

我还没有在这段代码中介绍网络功能,因为它只是一个测试材料,可以确定如何一次只读取1000个。它当然能够很好地读取整个部分,但我不知道如何更改它以便一次只读取部分。我会尝试添加read(1000),但打印空虚!我不确定这里读到的确切位置,不幸的是,到目前为止,我在网上阅读的这些代码的部分内容(例如with)没有任何帮助。如果有人能指出我正确的方向,那么我将非常感激。

1 个答案:

答案 0 :(得分:8)

file.read()采用 size 参数:

  

从文件中读取最多 size 字节(如果读取在获得size字节之前达到EOF,则更少)。如果size参数为负数或省略,则读取所有数据,直到达到EOF。

您可以在循环中使用它,并结合iter() function(第二个参数设置为''作为标记)和functools.partial()以提高效率:

from functools import partial

with open(localFileTT, 'rb', 0) as f:
    for chunk in iter(partial(f.read, 1000), ''):
        # chunk is up to 1000 characters long

另一种方法是使用while循环:

with open(localFileTT, 'rb', 0) as f:
    while True:
        chunk = f.read(1000)
        if not chunk:
            # EOF reached, end loop
            break
        # chunk is up to 1000 characters long

如果您已经尝试read(1000)并且返回一个空字符串,那么您的文件当时已经在EOF。