2010-07-31 2 views
5

J'ai besoin de créer des fichiers de taille arbitraire qui ne contiennent aucune donnée. Ils sont potentiellement assez grands. Alors que je pourrais juste boucler et écrire un seul caractère nul jusqu'à ce que j'ai atteint la taille du fichier, cela semble moche.Comment remplir efficacement un fichier avec des données nulles à partir de python?

with open(filename,'wb') as f: 
    # what goes here? 

Quelle est la manière efficace et pythonique de faire cela?

Répondre

16

Vous pouvez rechercher une position spécifique et écrire un octet, et le système d'exploitation fera apparaître magiquement le reste du fichier.

with open(filename, "wb") as f: 
    f.seek(999999) 
    f.write("\0") 

Vous devez écrire au moins un octet pour que cela fonctionne.

+0

Et le système de fichiers doit prendre en charge les fichiers fragmentés –

+2

Cela fonctionne toujours si le système de fichiers ne prend pas en charge fichiers clairsemés; dans ce cas, le système d'exploitation crée un fichier non sparse de taille équivalente. –

+0

Oui bien sûr, j'ai imaginé pour une raison quelconque la question posée pour un fichier clairsemé :) –

8
with open('zero', 'w') as f: 
    f.seek(999999999) 
    f.write('\0') 

Permet de créer un sparse file si le système d'exploitation le prend en charge. La magie est que les fichiers créés de cette façon ne prennent pas d'espace (jusqu'à ce que vous le copiez ailleurs avec un programme qui ne conserve pas les trous)

Questions connexes