Python:切片一个非常大的二进制文件

标签 python binary large-files

假设我有一个 12GB 的二进制文件,我想从它的中间切出 8GB。我知道我想在其间切割的位置索引。

我该怎么做?显然 12GB 不适合内存,这很好,但 8GB 也不会......我认为这很好,但如果你分 block 做,二进制似乎不喜欢它!我一次将 10MB 附加到一个新的二进制文件中,但新文件中每个 10MB block 的边缘都有不连续点。

是否有一种 Pythonic 的方式可以轻松地做到这一点?

最佳答案

这是一个简单的例子。根据需要进行调整:

def copypart(src,dest,start,length,bufsize=1024*1024):
    with open(src,'rb') as f1:
        f1.seek(start)
        with open(dest,'wb') as f2:
            while length:
                chunk = min(bufsize,length)
                data = f1.read(chunk)
                f2.write(data)
                length -= chunk

if __name__ == '__main__':
    GIG = 2**30
    copypart('test.bin','test2.bin',1*GIG,8*GIG)

关于Python:切片一个非常大的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363483/

相关文章:

Python 固定长度数据包

php - 使用 PHP 进行非常大的上传

java - 如何接收十六进制的套接字输入?

python - 如何在 Python 中迭代 N 级嵌套字典?

javascript - 处理哈希数据的最佳算法

python - Keras中按功能进行缩放和平移(FiLM层)

c++ - 如何将十进制字符串转换为二进制字符串?

intellij-idea - 如何修复 : "The file is too large: __ , showing a read-only preview of the first: __" in Intellij IDEA?

version-control - 是否有允许您永久删除文件的版本控制系统?

python - 如何用字典创建华夫饼图?