Відповіді:
У пітоні:
open('file.txt', 'w').close()
Або, якщо ви вже відкрили файл:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
У C ++ ви можете використовувати щось подібне.
#include<fstream>а потім std::ofstream("file.txt");приблизно такий же короткий, як у Python. :)
f.seek(0)після цього f.truncate(0), інакше у вас буде додано дивне \ x00 додане на початку файлу.
Не повна відповідь, а більше розширення до відповіді ondra
Під час використання truncate()(мій кращий метод) переконайтесь, що ваш курсор знаходиться у потрібному положенні. Коли для читання відкривається новий файл - open('FILE_NAME','r')курсор за замовчуванням знаходиться у 0. Але якщо ви проаналізували файл у своєму коді, переконайтеся, що вкажіть на початку файлу ще раз, тобто truncate(0)
за замовчуванням truncate()обрізає вміст файлу, починаючи з поточної позиції cusror.
Відкриття файлу в режимі "запис" очищає його, не потрібно спеціально його писати:
open("filename", "w").close()
(ви повинні закрити його, оскільки час, коли файл автоматично закриється, може бути специфічним для реалізації)
Від користувача @jamylak альтернативною формою open("filename","w").close()є
with open('filename.txt','w'): pass
Під час використання with open("myfile.txt", "r+") as my_file:я отримую дивні нулі myfile.txt, тим більше що я читаю файл спочатку. Щоб воно працювало, мені довелося спочатку змінити вказівник my_fileна початок файлу my_file.seek(0). Тоді я міг би зробити, my_file.truncate()щоб очистити файл.
Ви повинні перезаписати файл. В C ++:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()дзвінку немає потреби . Деструктор закриє файл. Тож вам просто потрібно створити тимчасовий:ofstream("test.txt");
Призначення покажчика файлу на нуль всередині вашої програми просто позбудеться цього посилання на файл. Файл все ще є. Я думаю, що remove()функція в c stdio.h- це те, що ви шукаєте там. Не впевнений у Python.
Якщо для вас важлива безпека, то відкриття файлу для запису та закриття ще раз буде недостатньо. Принаймні частина інформації все ще буде знаходитися на пристрої зберігання даних, і їх можна було б знайти, наприклад, за допомогою утиліти відновлення дисків.
Припустимо, наприклад, що файл, який ви стираєте, містить виробничі паролі і його потрібно видалити відразу після завершення цієї операції.
Нульове заповнення файлу, коли ви закінчите його використання, сприяє знищенню конфіденційної інформації.
У недавньому проекті ми використали наступний код, який добре працює для невеликих текстових файлів. Він перезаписує наявний вміст рядками нулів.
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)
Зауважте, що заповнення нуля не гарантуватиме вашу безпеку. Якщо ви насправді стурбовані, вам краще буде заповнити нуль і використовувати спеціальну утиліту, наприклад File Shredder або CCleaner, щоб витерти «порожнє» місце на диску.
Ви не можете "стерти" з файлу на місці, якщо вам не потрібно буде стерти його до кінця. Будьте вмістом із перезаписом значення "порожнє", або прочитайте частини потрібного вам файлу та запишіть його в інший файл.
Оскільки текстові файли є послідовними, ви не можете безпосередньо стерти дані з них. Ваші варіанти:
Подивіться на seek/ truncateфункцію / метод для втілення будь-якої з вищезазначених ідей. І Python, і C виконують ці функції.
os.removeабо os.unlinkв python, або unlinkв C. Інший варіант - просто відкрити файл для запису чи використання truncate.
Написання та читання вмісту файлів
def writeTempFile(text = ''):
filePath = "/temp/file1.txt"
if not text: # If blank 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
Це працювало для мене
Ви також можете скористатися цим (на основі декількох вищезазначених відповідей):
file = open('filename.txt', 'w')
file.write('')
file.close
звичайно, це дійсно поганий спосіб очищення файлу, оскільки для нього потрібна стільки рядків коду, але я щойно написав це, щоб показати вам, що це можна зробити і в цьому методі.
щасливе кодування!