回答:
Pythonでは:
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が追加されます。
ユーザー@jamylakからの代替形式open("filename","w").close()は
with open('filename.txt','w'): pass
ファイルを上書きする必要があります。C ++の場合:
#include <fstream>
std::ofstream("test.txt", std::ios::out).close();
close()通話の必要はありません。デストラクタはファイルを閉じます。:ただ一時的に作成する必要がありますのでofstream("test.txt");
プログラム内でファイルポインターをnullに割り当てると、そのファイルへの参照が削除されます。ファイルはまだ残っています。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)
ゼロフィリングはセキュリティを保証するものではないことに注意してください。本当に心配な場合は、ゼロフィルを行い、ファイルシュレッダーやCCleanerなどの専門ユーティリティを使用して、ドライブの「空の」スペースをワイプしてクリーンにするのが最善です。
末尾を消去する必要がない限り、ファイルからインプレースで「消去」することはできません。「空」の値が上書きされたコンテンツであるか、必要なファイルの部分を読み取って別のファイルに書き込みます。
テキストファイルはシーケンシャルなので、それらのデータを直接消去することはできません。オプションは次のとおりです。
seek/ truncatefunction / methodを見て、上記のアイデアを実装してください。PythonとCの両方にこれらの関数があります。
os.removeまたはos.unlinkPythonで、またはunlinkC で使用します。別のオプションは、書き込みまたは使用のためにファイルを再度開くことです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
それは私のために働いた