Python Glossary English

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Сообщить о неточности