Иногда возникают ситуации, когда надо произвести запись в файл, в котором уже находятся данные. Или просто удалить все содержимое. Рассмотрим, как выполнить очистку этого файла средствами Python 3.
Способы
Очистить файл в Python 3 можно следующими способами:
- При открытии использовать режим, в котором указатель находится в начале документа.
- Вручную переместить указатель в начальную позицию.
- Средствами операционной системы обнулить содержимое файла.
Рассмотрим эти варианты подробно.
При открытии
Когда файл открывается на запись, то указатель текущего положения в документе может быть расположен в начале или в конце документа. Если указатель в конце, то данные будут дописываться. Нас же интересует вариант, когда указатель расположен в начале.
f = open('test.txt', 'w') f.close()
Здесь w – указывает режим открытия файла на запись в текстовом режиме с размещением указателя в начале. После выполнения этого кода, если существовал указанный файл, то содержимое его очистится. Если его не было, то создастся новый пустой.
Перед закрытием, можно было добавить информацию. Она будет записана с начала файла, а не дописана в конец.
f = open('test.txt', 'w') f.write('something') f.close()
Если надо записывать данные в бинарный файл, то следует использовать режим “wb”.
Если же наоборот, нам нужно добавить информацию в конец файла. При этом старые данные чтобы остались. В этом случае к режиму следует добавить символ +. Режим открытия текстового документа будет “w+”, а бинарного “wb+”.
Дополнительную информацию по режимам открытия можно получить в отдельной статье на нашем сайте.
Перемещение указателя
Если мы открыли файл на запись и не знаем, в каком месте находится указатель. Возможно, мы уже записали какие то данные. Мы можем просто переместить указатель в начало и закрыть его. В этом случае документ будет пустым.
f = open('test.txt', 'w+') f.seek(0) f.close()
В этом примере открытие сделали специально в режиме дозаписи. После закрытия, даже если в файле были данные, они удалятся.
Вот еще пример, здесь мы записываем данные, потом переносим указатель в начало. После этого еще раз производим запись. В итоге, в конце работы, в файле будет только последняя сделанная запись. Те данные, которые были внесены вначале, благополучно удалятся.
f = open('test.txt', 'w+') f.write('something string') f.seek(0) f.write('new string') f.close()
Средствами ОС
Для очистки с помощью средств операционной системы воспользуемся стандартной библиотекой os. Вначале её надо подключить с помощью инструкции import os.
На linux должно пройти следующим образом.
import os os.system(r' >file.txt')
Можно воспользоваться командами cp или cat. Вот пример решения с помощью cat.
os.system(r'cat /dev/null>file.txt')
Если код исполняется на Windows, то решение может быть таким:
os.system(r'nul>file.txt')