2011-06-27 13 views
6

Duplicar posible:
Quickly create large file on a windows system?¿Cómo crear un archivo muy grande a bajo precio usando Python en Windows 7?

Para propósitos de prueba, me gustaría ser capaz de crear y borrar archivos muy grandes (varios GB de). No necesito escribir nada específico para ellos. Podrían ser datos aleatorios. ¿Hay alguna 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 así? Para crear el archivo en cuestión de unos pocos segundos es deseable.

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

+0

@GWW: el OP pidió una solución de Python, por lo que no es un duplicado. –

+2

No es un duplicado ya que esta es claramente una pregunta de Python, mientras que la otra es más como una pregunta general para obtener una respuesta de shell. –

+0

@Nick Dandoulakis: Hay una solución de Python para la pregunta – GWW

Respuesta

19

Esto debería funcionar en sistemas de archivos NTFS, ya que el apoyo sparse files. Es casi instantáneo.

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

El archivo se appearantly estar lleno de bytes \ x00, pero esos son, de hecho, acaba de crear, según sea necesario cuando se lee desde el archivo. Casi no utiliza espacio en disco (aunque puede mirar como si usara 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 asignando los bloques necesarios cuando escribe a ella AFAIK es bastante posible crear un archivo disperso que sea mucho más grande que el disco en el que reside, aunque esto puede provocar problemas más adelante. :)

Cuidado: si copia un archivo disperso, en el proceso se puede expandir a un archivo no disperso (lea "falso" \ x00 bytes, escriba real \ x00 bytes). Esto es una consecuencia del hecho de que parece como un archivo ordinario de 10 GB con bytes nulos para ser "compatible con versiones anteriores": se deben realizar comprobaciones por separado para mostrarlo como un archivo disperso. Para copiar con éxito un archivo disperso y mantenerlo un archivo disperso, deben cumplirse dos condiciones:

  • la herramienta utilizada para copiar debe ser "consciente" de los archivos dispersos, y
  • el sistema de archivos que se copia en debe ser compatible con archivos dispersos

por ejemplo, unidades de almacenamiento USB/plumas se formatean normalmente con el viejo sistema de archivos FAT por defecto, y lo hace no admite archivos dispersos. De las pruebas, el explorador de Windows XP parece no preservar los archivos dispersos al copiar. This tip sugiere que Robocopy está a la altura, pero no lo he probado.

+1

+1 para estos consejos muy interesantes. –

+1

¡parece que me toma mucho tiempo! –

Cuestiones relacionadas