¿Cómo crear un archivo muy grande a bajo costo usando Python en Windows 7?

Posible duplicado:
¿Crear rápidamente un archivo grande en un sistema de Windows?

Para fines de prueba, me gustaría poder crear y eliminar archivos muy grandes (varios GB). No tengo necesidad de escribir nada específico para ellos. Podrían ser datos aleatorios. ¿Hay una manera de generar un archivo grande simplemente asignando el espacio en el disco? Si no, ¿cuál es la forma más rápida de escribir un archivo de este tipo? Para crear el archivo en cuestión de unos segundos es conveniente.

Necesito hacer esto dentro de un script de Python y lo estoy haciendo en Windows 7.

Esto debería funcionar en los sistemas de archivos ntfs, ya que admiten archivos dispersos . Es casi instantáneo.

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

Aparentemente, el archivo se llenará con \ x00 bytes, pero de hecho, estos se crean según sea necesario cuando se lee del archivo. Casi no usa espacio en disco (aunque puede parecer que usa los 10 GB desde el principio, no he encontrado una manera fácil de verificar el tamaño real del archivo en Windows) y crece al asignar los bloques necesarios cuando escribe. eso. AFAIK es bastante posible crear un archivo disperso que sea mucho más grande que el disco en el que reside, aunque esto puede, por supuesto, causar problemas más adelante. 🙂

Cuidado: si copia un archivo disperso, en el proceso puede expandirse a un archivo no disperso (lea “falso” \ x00 bytes, escriba real \ x00 bytes). Esto es una consecuencia del hecho de que se parece a un archivo ordinario de 10 GB con bytes nulos para ser “compatible con versiones anteriores”; se deben realizar verificaciones separadas para revelarlo como un archivo disperso. Para copiar con éxito un archivo disperso y mantenerlo como un archivo disperso, se deben cumplir dos condiciones:

  • la herramienta utilizada para copiarlo debe ser “consciente” de los archivos dispersos, y
  • El sistema de archivos en el que se copia debe admitir archivos dispersos.

Por ejemplo, las unidades de memoria USB / bolígrafos usualmente están formateadas con el antiguo sistema de archivos FAT de manera predeterminada, y no admite archivos dispersos. A partir de las pruebas, el explorador de Windows XP no muestra archivos dispersos al copiar. Este consejo sugiere que Robocopy está a la altura del trabajo, pero no lo he probado.