如何在Windows 7中使用Python低成本创建大文件?

11 投票
1 回答
9024 浏览
提问于 2025-04-16 20:24

可能重复的问题:
在Windows系统上快速创建大文件?

为了测试,我想创建和删除一些非常大的文件(几GB的大小)。我不需要在这些文件里写任何特定的内容,里面可以是随机的数据。有没有办法通过简单地在磁盘上分配空间来生成一个大文件?如果不行,写这样一个文件的最快方法是什么?能在几秒钟内创建这个文件是我希望的。

我需要在一个Python脚本中完成这个操作,并且是在Windows 7系统上进行的。

1 个回答

24

这在ntfs文件系统上应该是可以工作的,因为它们支持稀疏文件。这个过程几乎是瞬间完成的。

with open("file.to.create", "w") as file:
    file.truncate(10 ** 10)

文件看起来会充满了\x00字节,但实际上这些字节是根据需要在你读取文件时才创建的。它几乎不占用磁盘空间(虽然它一开始可能看起来占用了全部10GB——我没有找到简单的方法来检查Windows中的实际文件大小),并且在你写入数据时会通过分配所需的块来增长。根据我的了解,创建一个比它所在磁盘大得多的稀疏文件是完全可能的,尽管这可能会在后面引发一些问题。:)

需要注意的是:如果你复制一个稀疏文件,它在这个过程中可能会变成一个非稀疏文件(也就是读取“假”的\x00字节,写入真实的\x00字节)。这是因为它看起来就像一个普通的10GB文件,里面充满了空字节,以便保持“向后兼容”——需要进行单独的检查才能确认它是一个稀疏文件。要成功复制一个稀疏文件并保持它的稀疏特性,必须满足两个条件:

  • 用于复制的工具必须“知道”稀疏文件的存在,
  • 复制到的文件系统必须支持稀疏文件。

例如,USB闪存驱动器通常默认使用旧的FAT文件系统格式化,而这个文件系统支持稀疏文件。从测试来看,Windows XP的资源管理器在复制时似乎不会保留稀疏文件。这个提示建议使用Robocopy来完成这个任务,但我还没有测试过。

撰写回答