Python 3.3+Linuxosфункция
os.posix_fallocate
os — советы ядру
Заранее выделяет место на диске под файл заданного размера. Доступно на Linux.
Синтаксис
os.posix_fallocate(...)
В отличие от truncate, действительно выделяет место на диске: нехватка места обнаружится сразу, а не посреди записи. Размер файла при необходимости увеличивается. На файловых системах без нужной поддержки библиотека может эмулировать выделение записью нулей, и это медленно.
Примеры
import os
fd = os.open('big.bin', os.O_WRONLY | os.O_CREAT) # → ? только Unix: дескриптор нового файла, например 3
os.posix_fallocate(fd, 0, 1024 * 1024) # → ? только Unix: на диске заранее выделен 1 МБ под файл
print(os.fstat(fd).st_size) # → 1048576 — файл сразу нужного размера, хотя не записано ни байта
os.ftruncate(fd, 8 * 1024 * 1024) # → ? размер вырастет до 8 МБ, но место НЕ резервируется — выйдет «дырявый» (sparse) файл
os.posix_fallocate(fd, 0, 0) # → ? только Unix: OSError [Errno 22] Invalid argument — длина должна быть больше нуля
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности