2013-06-30 24 views
5

kullanarak bir dosyanın boyutunun artırılması Ve şimdi big.file (yaklaşık) 1 gigabayt olduğunu. Ancak Linux'ta bu, ValueError: mmap length is greater than file size'u döndürecektir.</p> <pre><code>from mmap import mmap f = open('big.file', 'w') f.close() f = open('big.file', 'r+') m = mmap(f.fileno(), 10**9) </code></pre> <p>tarafından ben büyük bir dosya oluşturabilir Windows üzerinde Python mmap'e

Windows'da olduğu gibi Linux'ta da aynı davranışı elde etmenin bir yolu var mı? Yani, bir dosyanın boyutunu mmap kullanarak artırmak mümkün mü?

cevap

4

POSIX sistemlerinde, dosyanın boyutunu büyütmek (veya azaltmak) için en az mmap() kullanılamaz. mmap() 'un işlevi, bir dosyanın bir bölümünü bellek haritasıyla eşleştirmektir. Eşlemek istediğiniz şey aslında var olmalıdır mantıklı! Açıkçası, gerçekten MS Windows altında bunu yapmak mümkün olacağını gerçekten şaşırdım.

Bir dosyayı büyütmek istiyorsanız, mmap() numaralı telefondan önce bu dosyayı yalnızca ftruncate() gönderin.

+0

Bu yararlı bir dosyayı da kısaltabilirsiniz. Şimdi keşke Windows'un ftruncate() 'olmasını isterdim! –

+0

Windows'un 'ftruncate()' özelliği yok mu? Eh, bu da beni şaşırtıyor :-) Yine de mutlaka * ya da dosya küçültme * eşdeğer bir yöntem olmalıdır. – Celada

+0

Bu ifadeyi, herhangi bir Windows dökümanından değil, Python Docs'tan yüklediğimi söylemeliyim. –