python - 如何在 Windows 7 中使用 Python 廉价地创建一个非常大的文件?

标签 python file windows-7 filesystems

<分区>

Possible Duplicate:
Quickly create large file on a windows system?

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

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

最佳答案

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

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

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

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

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

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

关于python - 如何在 Windows 7 中使用 Python 廉价地创建一个非常大的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497722/

相关文章:

mysql - 更新 mysql XML blob

c# - 将窗口停靠为工具栏

Python Proton 将二进制数据发送到 Active MQ

file - htaccess mod_rewrite 引用完整路径目录

macos - 在 OSX 上规范化 bash 中的任意文件路径

c - 由于神秘原因,文件加载脚本无法工作

python - Python 中的子类化和内置方法

python - "pipenv install tensorflow"卡在 "Locking..."

python - 将 datetime.date 对象与 datetime.datetime 对象中的时间字符串组合

windows-7 - 为什么 WEKA 不从命令行运行?