Что делает truncate с файлом
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* начиная с glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
Увеличение размера файла
Вы можете увеличить размер файла, используя «+» с опцией «-s».
Мы бы хотели увеличить размер файла с 300 кб до 600 кб:
Размер файла увеличен с 300 кбдо 600 кб. Проверьте размер:
Как использовать команду «Truncate»?
Оператор перенаправления оболочки «>» – самый популярный и простой способ обрезать файлы.
Синтаксис усечения файлов с перенаправлением:
«:» Двоеточие означает истинны и не имеет выхода и оператор перенаправления «>» перенаправляет вывод в конкретный файл.
Файл, который мы усекаем, называется test.sh:
Другой способ обрезать файл:
Он удаляет содержимое файла «test.sh».
Вывод
Мы изучили все методы изменения размера файла, плавающего значения и строки с использованием различных методов усечения python. Мы также научились создавать файл и выполнять над ним операции чтения/записи.
Попробуйте запустить программы на вашей стороне и дайте мне знать, если у вас есть какие-либо вопросы.
int truncate(const char *path, off_t length);
int ftruncate(int fd, off_t length);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* начиная с glibc 2.3.5: */ _POSIX_C_SOURCE >= 200112L
Должен Читать
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Использование Python Truncate для изменения размера файла
Поскольку мы уже знаем, что такое truncate (), каковы параметры, дайте нам знать, как усечь файл. Если вы не знаете, как выполнять операции чтения/записи в файле, посмотрите на следующий код, и вы узнаете основы.
Усечение файла до определенного размера
Для создания файла используйте:
Чтобы подтвердить права доступа и размер файла, используйте:
Урежем файл до размера 100 байт:
Для подтверждения размера используйте:
Чтобы уменьшить размер файла до 300 КБ:
Введите указанную ниже команду, чтобы проверить размер:
Получать помощь
ЗАМЕЧАНИЯ
В ОПИСАНИИ приведена информация для XSI-совместимых систем. Для не XSI-совместимых систем в стандарте POSIX описано два поведения ftruncate(), когда length превышает длину файла (заметим, что truncate() не обязательно быть во всех таких окружениях): или вернуть ошибку, или расширить файл. Подобно большинству реализаций UNIX, Linux соответствует требованию XSI, когда работает с родными файловыми системами. Однако, в некоторых неродных файловых системах не разрешается использовать truncate() и ftruncate() для расширения файла больше его текущей длины: например, в Linux это касается VFAT.
Первоначальные версии системных вызовов truncate() и ftruncate() в Linux не умели работать с большими файловыми смещениями. Позднее, в Linux 2.4 были добавлены системные вызовы truncate64() и ftruncate64() для работы с большими файлами. Однако это различие может игнорироваться приложениями, которые используют glibc, так как имеющиеся в ней обёрточные функции самостоятельно задействуют более новый системный вызов, если он доступен.
На некоторых 32-битных архитектурах интерфейс этих системных вызовов отличается от описанного выше по причинам, указанным в syscall(2).
СООТВЕТСТВИЕ СТАНДАРТАМ
Установка пакетов Coreutils
Команда truncate входит в состав большинства дистрибутивов Linux. Если его нет, его также можно установить с помощью приведенной ниже команды:
Используйте команду grep, чтобы просмотреть подробную информацию о пакетах:
Python truncate()
Это встроенная функция в python, используемая для усечения файлов.
Параметры усечения Python
Он принимает только один параметр “size”, и этот параметр является необязательным. Если значение не указано, он принимает значение, в котором он находится в данный момент. Например, если у нас есть файл, в котором написано: “Здравствуйте, это файл, который я создал для проверки метода truncate”, то в настоящее время мой указатель находится на индексе 10. Тогда процесс усечения произойдет после 10-го индекса.
ОШИБКИ
Для truncate(): EACCES В одном из каталогов префикса не разрешен поиск, либо указанный файл не доступен на запись для пользователя (смотрите также path_resolution(7)). EFAULT Значение path указывает за пределы адресного пространства, выделенного процессу. EFBIG Аргумент length больше максимально допустимого размера файла (XSI). EINTR При блокирующем ожидании завершения вызов был прерван обработчиком сигналов; смотрите fcntl(2) и signal(7). EINVAL Аргумент length является отрицательным или больше максимально допустимого размера файла. EIO Во время обновления индексного дескриптора (inode) возникла ошибка ввода/вывода. EISDIR Указанный файл является каталогом. ELOOP Во время определения pathname встретилось слишком много символьных ссылок. ENAMETOOLONG Компонент имени пути содержит более 255 символов, или весь путь содержит более 1023 символов. ENOENT Указанный файл не существует. ENOTDIR Компонент в префиксе пути не является каталогом. EPERM Используемая файловая система не поддерживает расширение файла больше его текущего размера. EPERM Выполнение операции предотвращено опечатыванием (file seal); смотрите fcntl(2). EROFS Указанный файл находится на файловой системе, смонтированной только для чтения. ETXTBSY Файл является исполняемым файлом, который в данный момент исполняется.
Для ftruncate() действуют те же ошибки, за исключением того, что вместо ошибок, связанных с неправильным path, появляются ошибки, связанные с файловым дескриптором fd:
EBADF Значение fd не является правильным файловым дескриптором. EBADF или EINVAL Дескриптор fd не открыт для записи. EINVAL Дескриптор fd не указывает на обычный файл. EINVAL или EBADF Файловый дескриптор fd не открыт на запись. В POSIX это допускается и переносимые приложения должны обрабатывать любую ошибку для этого случая (Linux возвращает EINVAL).
ДЕФЕКТЫ
Из-за ошибки в заголовочном файле glibc 2.12 минимальное значение _POSIX_C_SOURCE, требуемое для объявления декларации ftruncate(), было равно 200809L вместо 200112L. В последующих версиях glibc эта ошибка была исправлена.
Добавить в избранное
Главное меню » Linux » Как использовать команду Truncate в Linux
И ногда нам нужно удалить содержимое файла, не удаляя файл; для этой операционной системы Linux есть команда под названием «Truncate». Он используется для увеличения или уменьшения размера файла. Усечение файла происходит намного быстрее и проще без изменения разрешений и владельца файла.
Усеченный размер зависит от исходного размера файла; дополнительные данные будут потеряны, если размер файла больше указанного.
Начнем с разных примеров, чтобы увидеть, как можно уменьшить размер файла.
Заключение:
Truncate – очень полезная команда для удаления содержимого файла, не удаляя файл. Вы также можете изменить размер файла на нужный вам размер. В этой статье мы узнали, как обрезать содержимое файла, а также как уменьшить или расширить файлы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
ОПИСАНИЕ
Функции truncate() и ftruncate() обрезают обычный файл, указанный по имени path или ссылке fd, до размера, указанного в length (в байтах).
Если до этого файл был больше указанного размера, все лишние данные будут утеряны. Если файл был меньше, он будет увеличен, а дополнительная часть будет заполнена нулевыми байтами («\0»).
Смещение файла не изменяется.
Если размер изменился, поля st_ctime и st_mtime (время последнего изменения состояния и время последнего изменения, соответственно; смотрите stat(2)) файла будут обновлены, а биты режимов set-user-ID и set-group-ID могут быть сброшены.
Для ftruncate() файл должен быть открыт на запись; для truncate() файл должен быть доступен на запись.
ЗАМЕЧАНИЯ
В ОПИСАНИИ приведена информация для XSI-совместимых систем. Для не XSI-совместимых систем в стандарте POSIX описано два поведения ftruncate(), когда length превышает длину файла (заметим, что truncate() не обязательно быть во всех таких окружениях): или вернуть ошибку, или расширить файл. Подобно большинству реализаций UNIX, Linux соответствует требованию XSI, когда работает с родными файловыми системами. Однако, в некоторых неродных файловых системах не разрешается использовать truncate() и ftruncate() для расширения файла больше его текущей длины: например, в Linux это касается VFAT.
Первоначальные версии системных вызовов truncate() и ftruncate() в Linux не умели работать с большими файловыми смещениями. Позднее, в Linux 2.4 были добавлены системные вызовы truncate64() и ftruncate64() для работы с большими файлами. Однако это различие может игнорироваться приложениями, которые используют glibc, так как имеющиеся в ней обёрточные функции самостоятельно задействуют более новый системный вызов, если он доступен.
На некоторых 32-битных архитектурах интерфейс этих системных вызовов отличается от описанного выше по причинам, указанным в syscall(2).
Уменьшение размера файла
Предположим, у вас есть файл 600 кб и вы хотите уменьшить его размер до 270 кб, используйте параметр « -s » и « – » с указанным размером:
Текущий размер файла – 330 кб.
Усечение значений с плавающей запятой в Python
В Python, чтобы усечь плавающее значение или, говоря языком непрофессионалов, удалить значение после десятичной дроби, мы используем метод trunc() математической библиотеки для удаления десятичных значений. Для этого мы должны импортировать математическую библиотеку.
Некоторые люди путаются, что эта функция похожа на round(). Но это не так, если мы передадим значение типа 3.99, оно вернет 3, в то время как round() вернет 4.
Аналогично, если мы передадим любое отрицательное значение, оно удалит десятичное число и вернет результат в виде целого числа.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
Python Truncate С Параметром
Если мы дадим некоторое значение параметру size, то он усечет(очистит) все после этого индекса.Другими словами, наш файл имеет размер в байтах, который мы упомянули в параметре.
ПРИМЕЧАНИЕ - Вам может прийти в голову вопрос, что делать, если мы передадим размер больше, чем фактический размер файла. Ну, это полностью зависит от ИДЕИ, которую мы используем.
Здесь мы указали размер, который больше размера нашего файла. Когда я запускаю этот код на Jupyter Notebook, создается такой файл-
Когда я запускаю этот код в PyCharm IDE, никаких изменений не происходит.
Синтаксис Python Truncate
ОШИБКИ
Для truncate(): EACCES В одном из каталогов префикса не разрешен поиск, либо указанный файл не доступен на запись для пользователя (смотрите также path_resolution(7)). EFAULT Значение path указывает за пределы адресного пространства, выделенного процессу. EFBIG Аргумент length больше максимально допустимого размера файла (XSI). EINTR При блокирующем ожидании завершения вызов был прерван обработчиком сигналов; смотрите fcntl(2) и signal(7). EINVAL Аргумент length является отрицательным или больше максимально допустимого размера файла. EIO Во время обновления индексного дескриптора (inode) возникла ошибка ввода/вывода. EISDIR Указанный файл является каталогом. ELOOP Во время определения pathname встретилось слишком много символьных ссылок. ENAMETOOLONG Компонент имени пути содержит более 255 символов, или весь путь содержит более 1023 символов. ENOENT Указанный файл не существует. ENOTDIR Компонент в префиксе пути не является каталогом. EPERM Используемая файловая система не поддерживает расширение файла больше его текущего размера. EPERM Выполнение операции предотвращено опечатыванием (file seal); смотрите fcntl(2). EROFS Указанный файл находится на файловой системе, смонтированной только для чтения. ETXTBSY Файл является исполняемым файлом, который в данный момент исполняется.
Для ftruncate() действуют те же ошибки, за исключением того, что вместо ошибок, связанных с неправильным path, появляются ошибки, связанные с файловым дескриптором fd:
EBADF Значение fd не является правильным файловым дескриптором. EBADF или EINVAL Дескриптор fd не открыт для записи. EINVAL Дескриптор fd не указывает на обычный файл. EINVAL или EBADF Файловый дескриптор fd не открыт на запись. В POSIX это допускается и переносимые приложения должны обрабатывать любую ошибку для этого случая (Linux возвращает EINVAL).
Очистить содержимое файла
Используйте параметр «-s», чтобы удалить содержимое файлов. Это предпочтительный способ удалить файл вручную. Команда truncate эффективно удаляет все содержимое файла. Она не удаляет файл, а оставляет его как файл с нулевым байтом на диске.
Давайте используем усечение, чтобы очистить file.txt до 0 байтов:
Если вы воспользуетесь командой усечения, права доступа к файлу и право собственности на него сохранятся.
Используйте команду «ls -lh», чтобы подтвердить размер:
ДЕФЕКТЫ
Из-за ошибки в заголовочном файле glibc 2.12 минимальное значение _POSIX_C_SOURCE, требуемое для объявления декларации ftruncate(), было равно 200809L вместо 200112L. В последующих версиях glibc эта ошибка была исправлена.
Python предоставляет основные методы, необходимые для работы с открытыми файлами. Можно произвести практически любую операцию, действие, манипуляцию с файлом и данными хранящимся в нем, используя объект файла file object .
Прежде чем начинать что-то делать с файлом, его необходимо открыть его с помощью встроенной функции open() . Эта функция создает объект файла file object , который будет использоваться для вызова методов, которые представлены ниже.
Примечание. В зависимости от режима открытия файла mode , описанного в документации по встроенной функции open() , можно будет:
- работать с текстовыми или байтовыми данными;
- только читать данные из файла;
- создать файл и записать данные;
- очистить существующий файл и записать данные;
- дописать информацию в конец файла;
- и т. д., вариантов много.
Так же в функции open() можно установить желаемую кодировку файла.
Метод file.close() в Python, закрывает файл.
Метод file.close() закрывает открытый файл. Закрытый файл больше не может быть прочитан или записан. Любая операция, которая требует, чтобы файл был открыт, вызовет исключение ValueError после того, как файл был закрыт.
Метод file.flush() в Python, очищает буфер чтения.
Метод file.flush() очищает внутренний буфер. Обычно используется только для выходного потока. Его цель - очистить выходной буфер и переместить буферизованные данные на диск.
Метод file.fileno() в Python, получает файловый дескриптор.
Метод файла file.fileno() возвращает целочисленный файловый дескриптор, который используется базовой реализацией для запроса операций ввода-вывода из операционной системы.
Метод file.isatty() в Python, проверяет связь с терминалом.
Метод файла file.isatty() возвращает True, если файл подключен/связан с терминальным устройством tty или с tty-подобным устройством, иначе возвратит False.
Метод file.read() в Python, читает весь файл или кусками.
Метод файла file.read() считывает из файла не более size байтов. Если достигается конец файла EOF до получения указанного размера size байтов, тогда метод считает только доступные байты.
Метод file.readline() в Python, читает файл построчно.
Метод файла file.readline() читает одну целую строку из файла. Конечный символ новой строки \n сохраняется в строке.
Метод file.readlines() в Python, получает список строк файла.
Метод файла file.readlines() читает файловый объект построчно, пока не достигнет конца файла EOF, и возвращает список, содержащий строки файла.
Метод file.seek() в Python, перемещает указатель в файле.
Метод файла file.seek() устанавливает текущую позицию offset указателя для чтения/записи в файле file.
Метод file.tell() в Python, позиция указателя в файле.
Метод файла file.tell() возвращает текущую позицию указателя чтения/записи в файле в байтах.
Метод file.truncate() в Python, усекает размер файла.
Метод файла file.truncate() усекает размер файла. Если указан необязательный аргумент size, файл усекается до этого (максимально) размера.
Метод file.write() в Python, пишет данные в файл.
Метод файла file.write() записывает строку str в файл file. Метод возвращает целое число - количество записанных байт.
Метод file.writelines() в Python, пишет список строк в файл.
Метод файла file.writelines() записывает последовательность строк в файл file.
В python существуют различные способы усечения файлов, значений с плавающей запятой или строк. Усечение в Python означает изменение размера.
Одна из распространенных задач, которые мы должны выполнять с файлом, плавающими переменными или строками, заключается в том, что мы должны изменять его размер или усекать в соответствии с нашими потребностями. Чтобы усечь файл в Python, у нас есть метод truncate. Для значений с плавающей запятой у нас есть метод trunc() математической библиотеки.Но у нас нет прямого метода усечения строки. Итак, мы также узнаем, какие альтернативы у нас есть для усечения строки.
В терминах непрофессионала, Усечение относится к удалению нежелательных частей чего-либо. Аналогично, Python Truncate относится к удалению нежелательных данных из списков, словарей, кортежей и других файлов. Этот метод позволяет экономить память при выполнении кода. В этом посте мы рассмотрим весь синтаксис и использование функции truncate.
Python Truncate Без Параметра
Теперь давайте выполним truncate() на ‘xyz.txt – файл.
Мы только что написали какой-то текст на этом файле, вот почему href="https://en.wikipedia.org/wiki/Pointer_(computer_programming)">указатель находится в последнем индексе, поэтому ничего не будет удалено. Но если бы мы находились на 0-м индексе, то все было бы удалено. Мы можем использовать метод seek() для перехода к 0-му индексу. href="https://en.wikipedia.org/wiki/Pointer_(computer_programming)">указатель находится в последнем индексе, поэтому ничего не будет удалено. Но если бы мы находились на 0-м индексе, то все было бы удалено. Мы можем использовать метод seek() для перехода к 0-му индексу.
математика.()
Этот метод используется для удаления десятичной части числа.
Параметры
Он содержит только один параметр, то есть число, которое мы хотим усечь. Если мы передадим любое нечисловое значение, то получим ошибку типа.
Проверка версии
Чтобы проверить версию команды truncate, используйте:
СООТВЕТСТВИЕ СТАНДАРТАМ
ОПИСАНИЕ
Функции truncate() и ftruncate() обрезают обычный файл, указанный по имени path или ссылке fd, до размера, указанного в length (в байтах).
Если до этого файл был больше указанного размера, все лишние данные будут утеряны. Если файл был меньше, он будет увеличен, а дополнительная часть будет заполнена нулевыми байтами («\0»).
Смещение файла не изменяется.
Если размер изменился, поля st_ctime и st_mtime (время последнего изменения состояния и время последнего изменения, соответственно; смотрите stat(2)) файла будут обновлены, а биты режимов set-user-ID и set-group-ID могут быть сброшены.
Для ftruncate() файл должен быть открыт на запись; для truncate() файл должен быть доступен на запись.
Усечение строки в Python
Если мы хотим удалить все после индекса 19t,h в строках, давайте посмотрим, как мы это сделаем.
Читайте также: