2013-06-30 19 views
5

In Python auf Windows ich vonErhöhen der Größe der Datei mmap mit

from mmap import mmap 
    f = open('big.file', 'w') 
    f.close() 
    f = open('big.file', 'r+') 
    m = mmap(f.fileno(), 10**9) 

eine große Datei erstellen Und jetzt big.file ist (etwa) 1 Gigabyte. Unter Linux gibt dies jedoch zurück.

Gibt es eine Möglichkeit, unter Linux das gleiche Verhalten wie unter Windows zu erreichen? Das heißt, um die Dateigröße unter Verwendung von mmap zu erhöhen?

Antwort

4

Auf POSIX-Systemen kann mmap() nicht verwendet werden, um die Größe einer Datei zu erhöhen (oder zu verringern). Die Funktion mmap() dient dazu, einen Teil einer Datei im Speicher abzulegen. Es ist logisch, dass das, was Sie zuordnen möchten, tatsächlich existiert! Ehrlich gesagt, ich bin wirklich überrascht, dass Sie dies unter MS Windows tatsächlich tun können.

Wenn Sie eine Datei vergrößern möchten, nur ftruncate() es vor Ihnen mmap() es.

+0

Oh, das ist nützlich, weil Sie eine Datei auch kürzen können. Jetzt wünschte ich, Windows hätte 'ftruncate()'! –

+0

Windows hat 'ftruncate()' nicht? Nun, das überrascht mich auch :-) Aber sicher muss es eine * äquivalente Methode haben, Dateien zu vergrößern oder zu verkleinern. – Celada

+0

Ich sollte sagen, dass ich diese Aussage von den Python-Dokumenten abstamme, nicht von irgendeiner Windows-Dokumentation. –

Verwandte Themen