Как очистить текстовый файл python
Перейти к содержимому

Как очистить текстовый файл python

  • автор:

Как стереть содержимое текстового файла в Python?

Не полный ответ больше, чем расширение ответа ondra При использовании truncate() (моего предпочтительного метода) убедитесь, что ваш курсор находится в необходимой позиции. Когда открывается новый файл для чтения — open(‘FILE_NAME’,’r’) по умолчанию курсор находится на 0. Но если вы разобрали файл внутри вашего кода, убедитесь, что снова указываете в начале файла, т.е. truncate(0) По умолчанию truncate() обрезает содержимое файла, начиная с текущей позиции cusror. Простой пример

Поделиться 02 января 2014 в 09:33

Как предложил @jamylak, хорошая альтернатива, которая включает в себя преимущества контекстных менеджеров , это:

with open('filename.txt', 'w'): pass 

Поделиться 12 апреля 2017 в 10:37

При использовании with open(«myfile.txt», «r+») as my_file: , я получаю странные нули в myfile.txt , особенно потому, что я сначала читаю файл. Чтобы это работало, мне пришлось сначала изменить указатель my_file на начало файла с помощью my_file.seek(0) . Затем я смог сделать my_file.truncate() , чтобы очистить файл.

Поделиться 24 июля 2017 в 13:14

Если безопасность важна для вас, то открыть файл для записи и закрыть его снова будет недостаточно. По крайней мере, часть информации все еще будет находиться на запоминающем устройстве и может быть найдена, например, с помощью утилиты восстановления диска. Предположим, например, файл, который вы стираете, содержит производственные пароли и должен быть удален сразу после завершения текущей операции. Нулевое заполнение файла после его использования помогает гарантировать уничтожение конфиденциальной информации. В недавнем проекте мы использовали следующий код, который хорошо работает для небольших текстовых файлов. Он перезаписывает существующее содержимое строками нулей.

import os def destroy_password_file(password_filename): with open(password_filename) as password_file: text = password_file.read() lentext = len(text) zero_fill_line_length = 40 zero_fill = ['0' * zero_fill_line_length for _ in range(lentext // zero_fill_line_length + 1)] zero_fill = os.linesep.join(zero_fill) with open(password_filename, 'w') as password_file: password_file.write(zero_fill) 

Обратите внимание, что нулевое заполнение не гарантирует вашу безопасность. Если вы действительно обеспокоены, вам лучше всего использовать нулевое заполнение и использовать специальную утилиту, такую как Файл Шреддер или Клинер, чтобы очистить ‘пустое’ пространство на вашем диске.

Поделиться 17 апреля 2018 в 22:36
Написание и чтение содержимого файла

def writeTempFile(text = None): filePath = "/temp/file1.txt" if not text: # If not provided return file content f = open(filePath, "r") slug = f.read() return slug else: f = open(filePath, "a") # Create a blank file f.seek(0) # sets point at the beginning of the file f.truncate() # Clear previous content f.write(text) # Write file f.close() # Close file return text 

Это сработало для меня
Поделиться 27 апреля 2020 в 23:38
Вы также можете использовать это (на основе нескольких из вышеперечисленных ответов):

file = open('filename.txt', 'w') file.close() 

конечно, это действительно плохой способ очистить файл, потому что он требует столько строк кода, но я просто написал это, чтобы показать вам, что это также можно сделать с помощью этого метода. счастливого кодирования!

Поделиться 29 июля 2020 в 10:49
Вам необходимо перезаписать файл. В C++:

#include std::ofstream("test.txt", std::ios::out).close(); 

Поделиться 04 мая 2010 в 21:33

Вы не можете «стереть» файл на месте, если вам не нужно стереть конец. Либо вы будете довольны перезаписью пустого значения, либо прочтите интересующие вас части файла и запишите их в другой файл.

Поделиться 04 мая 2010 в 21:23

Указатель на файл с значением null внутри вашей программы просто избавится от этой ссылки на файл. Файл все еще есть. Я думаю, что функция remove() в c stdio.h — это то, что вы там ищете. Не уверен в Python.

Поделиться 04 мая 2010 в 21:27

  • Самый распространенный способ — создать новый файл. Прочитать из исходного файла и записать все в новый файл, кроме той части, которую вы хотите стереть. Когда весь файл будет написан, удалите старый файл и переименуйте новый файл, чтобы он имел исходное имя.
  • Вы также можете усечь и переписать весь файл из той точки, которую вы хотите изменить, и прочитать остальной файл в память. Стремитесь вернуться к той же точке, усечьте файл и записать содержимое без той части, которую вы хотите стереть.
  • Другой простой вариант — перезаписать данные с другими данными той же длины. Для этого найдите точную позицию и запишите новые данные. Ограничение заключается в том, что они должны иметь точно такую же длину.

Посмотрите на функцию/метод seek / truncate , чтобы реализовать любую из вышеперечисленных идей. И Python, и C имеют эти функции.

Удаление содержимого файла

Есть ли у файла метод удаления содержимого файла? Мне нужно не просто удалить файл, а именно удалить все содержимое файла, при этом, получается, должен остаться просто пустой файл. Пробовал через перезапись с пустой строкой но выдает ошибку

with open("text_here", "w") as f: f.write(") 

io.UnsupportedOperation: not writable

Отслеживать
задан 11 дек 2017 в 8:54
191 2 2 серебряных знака 14 14 бронзовых знаков
Достаточно просто открыть файл на запись. open(«text_here», «w») .
11 дек 2017 в 8:57
а файл разрешен для записи? Если у вас права только на чтение то это уже проблематичнее.
11 дек 2017 в 9:00
В этом примере у вас кавычка не закрыта. В реальном коде так же?
11 дек 2017 в 9:54

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

io.UnsupportedOperation: not writable

говорит о том, что вы пытаетесь осуществить запись в дескриптор, который не предназначен для этого. Например, если открыли файл только на чтение (mode=’r’)

Как подсказывают в комментариях, достаточно просто открыть файл на запись:

with open('file.name', 'wb'): pass 

Отслеживать
ответ дан 11 дек 2017 в 10:03
1,582 8 8 серебряных знаков 10 10 бронзовых знаков

  • python
  • файлы
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.2.12.4680

Как удалить пустые строки из файла python

Удалить пустые строки можно считав все строки из файла, отфильтровать пустые, и записать новый файл.

cat file.txt # foobar # # fizzbazz # helloworld! # # python # # hexlet # with open('file.txt') as f: lines = f.readlines() non_empty_lines = (line for line in lines if not line.isspace()) with open('new_file.txt', 'w') as n_f: n_f.writelines(non_empty_lines) cat new_file.txt # foobar # fizzbazz # helloworld! # python # hexlet 

Очистка файла

Иногда возникают ситуации, когда надо произвести запись в файл, в котором уже находятся данные. Или просто удалить все содержимое. Рассмотрим, как выполнить очистку этого файла средствами 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')

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *