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