Yanıtlar:
Python'da:
open('file.txt', 'w').close()
Veya alternatif olarak, önceden açılmış bir dosyanız varsa:
f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+
C ++ 'da benzer bir şey kullanabilirsiniz.
#include<fstream>ve sonra std::ofstream("file.txt");yaklaşık Python'daki kadar kısa. :)
f.seek(0)sonra eklemeyi unutmayın f.truncate(0), aksi takdirde dosyanın başlangıcına tuhaf \ x00 ekleyebilirsiniz .
Tam bir cevap değil, ondra'nın cevabının uzantısı gibi
truncate()(Tercih ettiğim yöntem) kullanırken , imlecinizin gerekli konumda olduğundan emin olun. Okumak için yeni bir dosya açıldığında - open('FILE_NAME','r')varsayılan olarak imleci 0'dadır. Ancak, dosyayı kodunuz içinde ayrıştırdıysanız, dosyanın başlangıcını tekrar gösterdiğinizden emin olun, yani truncate(0)
varsayılan truncate()olarak bir dosyanın içeriğini geçerli cusror konumundan başlayarak keser.
Bir dosyayı "yazma" modunda açmak onu temizler, özellikle ona yazmak zorunda değilsiniz:
open("filename", "w").close()
(Dosyanın otomatik olarak kapatılmasının zamanlaması uygulamaya özel olabileceğinden kapatmalısınız)
Kullanıcısından alternatif bir formunu @jamylak open("filename","w").close()IS
with open('filename.txt','w'): pass
Kullanırken with open("myfile.txt", "r+") as my_file:, myfile.txtözellikle önce dosyayı okuduğum için garip sıfırlar alıyorum. Çalışması için, önce işaretçisini ile my_filedosyanın başlangıcına değiştirmem gerekiyordu my_file.seek(0). O zaman my_file.truncate()dosyayı temizlemek için yapabilirim .
Dosyanın üzerine yazmalısınız. C ++ 'da:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()Aramaya gerek yok . Yıkıcı dosyayı kapatacaktır. Öyleyse sadece geçici bir şey oluşturmanız gerekiyor:ofstream("test.txt");
Dosya işaretçisini programınızın içinde null değerine atamak, dosyaya yapılan bu referansı ortadan kaldıracaktır. Dosya hala orada. Sanırım remove()c'deki işlev, stdio.horada aradığınız şey. Python hakkında emin değilim.
Güvenlik sizin için önemliyse, dosyayı yazmak için açıp tekrar kapatmak yeterli olmayacaktır. Bilgilerin en azından bir kısmı hala depolama cihazında olacaktır ve örneğin bir disk kurtarma programı kullanılarak bulunabilir.
Örneğin, sildiğiniz dosyanın üretim parolaları içerdiğini ve mevcut işlem tamamlandıktan hemen sonra silinmesi gerektiğini varsayalım.
Dosyayı kullanmayı bitirdikten sonra sıfır doldurmak, hassas bilgilerin yok edilmesini sağlamaya yardımcı olur.
Yakın tarihli bir projede, küçük metin dosyaları için iyi çalışan aşağıdaki kodu kullandık. Mevcut içeriğin üzerine sıfır satırları yazar.
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)
Sıfır doldurmanın güvenliğinizi garanti etmeyeceğini unutmayın. Gerçekten endişeliyseniz, sürücünüzdeki 'boş' alanı temizlemek için sıfır doldurmak ve File Shredder veya CCleaner gibi uzman bir yardımcı program kullanmak en iyisidir .
Sonunu silmeniz gerekmedikçe, yerinde bir dosyadan "silemezsiniz". Ya "boş" bir değerin üzerine yazılmış bir içerik olun ya da dosyanın ilgilendiğiniz kısımlarını okuyun ve başka bir dosyaya yazın.
Metin dosyaları sıralı olduğundan, üzerlerindeki verileri doğrudan silemezsiniz. Seçenekleriniz:
Yukarıdaki fikirlerden herhangi birini uygulamak için seek/ truncatefunction / method'a bakın . Hem Python hem de C bu işlevlere sahiptir.
os.removeveya os.unlinkiçinde veya unlinkC'de kullanın . Diğer bir seçenek, dosyayı yazmak veya kullanmak için yeniden açmaktır truncate.
Dosya içeriği yazma ve okuma
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
Benim için çalıştı
Bunu da kullanabilirsiniz (yukarıdaki cevaplardan birkaçına dayanarak):
file = open('filename.txt', 'w')
file.write('')
file.close
Tabii ki bu, bir dosyayı temizlemenin gerçekten kötü bir yoludur çünkü çok fazla kod satırı gerektirir, ancak bunu size bu yöntemde de yapılabileceğini göstermek için yazdım.
mutlu kodlama!