首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中加载带有缓冲区的文件?

如何在python中加载带有缓冲区的文件?
EN

Stack Overflow用户
提问于 2020-08-27 15:29:48
回答 2查看 1.6K关注 0票数 2

希望你今天过得愉快!

在我最近与Python 3.8.5的冒险中,我遇到了一个困境,我必须说.由于我是一个相当新的程序员,我恐怕我没有技术知识来加载一个(大)文件到程序中。

为了使我的问题更容易理解,让我们从下面看一看:

  1. 让我们说,我的系统上有一个文件名为"File.mp4“或"File.txt”(1GB大小);
  2. ,我想使用打开的rb函数将这个文件加载到我的程序中;
  3. i声明的缓冲区大小为1024;

这是我不知道怎么解决的部分

  1. I将1024个字节加载到
  2. 程序中,做我需要做的任何事情--
  3. --然后加载另一个1024字节,以替代旧的缓冲区
  4. Rinse,并重复到整个文件已被运行完。

G 217

我看了这个问题,但要么这对我的情况不好,要么我不知道如何实现-> link to the question

这是您所要求的全部代码:

代码语言:javascript
复制
BUFFER = 1024

with open('file.txt', 'rb') as f:
while (chunk := f.read(BUFFER)) != '':
    print(list(chunk))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 15:40:29

可以将来自io的缓冲输入与bytearray一起使用。

代码语言:javascript
复制
import io

buf = bytearray(1024)
with io.open(filename, 'rb') as fp:
    size = fp.readinto(buf)
    if not size:
       break

    # do things with buf considering the size
票数 3
EN

Stack Overflow用户

发布于 2020-08-27 15:39:28

这是python3.8的新walrus操作符之一,它既为变量分配了一个值,又返回了它刚刚分配的值。您可以使用file.read(size)读取1024字节的块,并在没有更多的文件可读取时停止:

代码语言:javascript
复制
buffer_size = 1024
with open('file.txt', 'rb') as f:
    while (chunk := f.read(buffer_size)) != b'':
        # do things with the variable `chunk`, which should have len() == 1024

请注意,条件的!= b''部分可以安全地移除,因为空字符串在用作布尔表达式时将计算为False。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63619354

复制
相关文章

相似问题

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