Python Glossary English

все Python 3Файлы и I/Oфункция

io.IOBase.truncate()

изменение размера

Обрезает файл до указанного размера в байтах. Если size не указан — обрезает до текущей позиции курсора. Файл должен быть открыт на запись.

Синтаксис

file.truncate(size=None)

Главная ловушка: truncate() не двигает курсор. Если в режиме 'r+' прочитать файл целиком, затем сделать f.truncate(0) и сразу писать, запись уйдёт со старой позиции, а начало файла добьётся нулевыми байтами — перед записью нужен f.seek(0). Если size больше текущего размера, файл, наоборот, расширяется нулями, а не даёт ошибку.

Примеры

import os
with open('data.txt', 'w') as f:
    f.write('много текста')
# очистить файл
with open('data.txt', 'r+') as f:
    f.truncate(0)
print(os.path.getsize('data.txt'))  # → 0
import os
# обрезать до 100 байт
with open('big.bin', 'wb') as f:
    f.write(bytes(1000))
with open('big.bin', 'r+b') as f:
    f.truncate(100)
print(os.path.getsize('big.bin'))  # → 100

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности