У меня есть текстовый файл, который я хочу удалить в Python. Как это сделать?
Как удалить содержимое файла текстового файла в Python?
Ответ 1
В python:
open('file.txt', 'w').close()
Или, альтернативно, если у вас уже открыт файл:
f = open('file.txt', 'r+')
f.truncate()
В С++ вы можете использовать что-то подобное.
Ответ 2
Не полный ответ на расширение ответа ondra
При использовании truncate()
(мой предпочтительный метод) убедитесь, что ваш курсор находится в нужном месте.
Когда новый файл открывается для чтения - open('FILE_NAME','r')
, он по умолчанию равен 0.
Но если вы проанализировали файл в своем коде, обязательно указывайте в начале файла снова i.e truncate(0)
По умолчанию truncate()
обрезает содержимое файла, начиная с текущей позиции cusror.
Ответ 3
open("filename","w").close()
Ответ 4
Вы должны перезаписать файл. В С++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
Ответ 5
Назначение указателя на нуль внутри вашей программы просто избавится от этой ссылки на файл. Файл все еще есть. Я думаю, что функция remove()
в c stdio.h
- это то, что вы ищете там. Не уверен в Python.
Ответ 6
От пользователя @jamylak альтернативной формой open("filename","w").close()
является
with open('filename.txt','w'): pass
Ответ 7
Поскольку текстовые файлы являются последовательными, вы не можете напрямую стереть данные с них. Ваши варианты:
- Наиболее распространенным способом является создание нового файла. Прочтите исходный файл и напишите все в новом файле, за исключением части, которую вы хотите удалить. Когда весь файл был записан, удалите старый файл и переименуйте новый файл, чтобы он имел свое первоначальное имя.
- Вы также можете обрезать и переписать весь файл с той точки, которую хотите изменить, и далее. Попробуйте указать, что вы хотите изменить, и прочитайте остальную часть файла в памяти. Вернитесь к той же точке, обрезайте файл и запишите содержимое без части, которую хотите удалить.
- Еще одна простая опция - перезаписать данные другими данными одинаковой длины. Для этого ищите точную позицию и записывайте новые данные. Ограничение состоит в том, что он должен иметь одинаковую длину.
Посмотрите на функцию/метод seek
/truncate
для реализации любой из вышеперечисленных идей. Оба Python и C имеют эти функции.
Ответ 8
Вы не можете "стереть" из файла на месте, если вам не нужно стирать конец. Либо будьте довольны перезаписью "пустого" значения, либо прочитайте части интересующего вас файла и напишите его в другой файл.
Ответ 9
При использовании with open("myfile.txt", "r+") as my_file:
я получаю странные нули в myfile.txt
, тем более, что сначала читаю файл. Чтобы он работал, мне пришлось сначала изменить указатель my_file
на начало файла с помощью my_file.seek(0)
. Тогда я мог сделать my_file.truncate()
, чтобы очистить файл.