【问题标题】:How to create a very large file cheaply using Python in Windows 7? [duplicate]如何在 Windows 7 中使用 Python 廉价地创建一个非常大的文件? [复制]
【发布时间】:2011-09-23 18:33:10
【问题描述】:

可能重复:
Quickly create large file on a windows system?

出于测试目的,我希望能够创建和删除非常大的文件(几 GB)。我不需要为他们写任何特定的东西。它们可能是随机数据。有没有办法通过简单地分配磁盘空间来生成大文件?如果没有,写这样一个文件的最快方法是什么?在几秒钟内创建文件是可取的。

我需要在 Python 脚本中执行此操作,并且在 Windows 7 上执行此操作。

【问题讨论】:

  • @GWW:OP 要求提供 Python 解决方案,所以它不是重复的。
  • 不是重复的,因为这显然是一个 Python 问题,而另一个更像是一个获得 shell 答案的一般问题。
  • @Nick Dandoulakis:这个问题有python解决方案
  • @GWW:这不会使问题重复。也许最好在此处添加该答案。

标签: python file windows-7 filesystems


【解决方案1】:

这应该适用于 ntfs 文件系统,因为它们支持sparse files。这几乎是瞬间的。

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

文件看起来会被 \x00 字节填充,但实际上这些只是在您从文件中读取时根据需要创建的。它几乎不使用磁盘空间(尽管它可能看起来从一开始就使用了全部 10 GB ——我发现没有简单的方法来检查 Windows 中的实际文件大小),并且增长了写入时分配所需的块。 AFAIK 很可能创建一个比它所在的磁盘大得多的稀疏文件,尽管这当然可能会在以后导致麻烦。 :)

注意:如果您复制稀疏文件,它可能会在此过程中扩展为非稀疏文件(读取“假”\x00 字节,写入真实 \x00 字节)。这是因为它看起来就像一个带有空字节的普通 10 GB 文件,以便“向后兼容”——必须执行单独的检查才能将其显示为稀疏文件。要成功复制稀疏文件并保持稀疏文件,必须满足两个条件:

  • 用于复制它的工具必须“感知”稀疏文件,并且
  • 复制到的文件系统必须支持稀疏文件

例如,USB 拇指驱动器/笔通常默认使用旧的 FAT 文件系统进行格式化,并且它支持稀疏文件。经测试,Windows XP 的资源管理器在复制时似乎不保留稀疏文件。 This tip 建议 Robocopy 可以胜任这项工作,但我还没有测试过。

【讨论】:

  • +1 这个非常有趣的提示。
  • 这对我来说似乎需要很长时间!!!
猜你喜欢
  • 2010-10-25
  • 1970-01-01
  • 2018-12-01
  • 2017-12-31
  • 2010-10-10
  • 1970-01-01
  • 2015-01-07
相关资源
最近更新 更多