ファイルから名前を取得するループを実行しています。
私がやりたいのは、名前が取得されたときにファイルから削除することです。これどうやってするの?
fileinputを試してください。
それは次のようになります:
import fileinput
for line in fileinput.input(someFileName, inplace=True):
doSomething()
繰り返された行はすべて消費されるため、ファイルから削除されます。
それだけを保持する必要がある場合print
は、同じ場所にあるファイルに書き換えられます。
つまり、行を印刷しないと消えます:)
ネイティブファイルはそのようには機能しません。ループを実行するたびに、残りのファイルのリスト全体を書き直す必要があります。パフォーマンスは悪くなります(ファイルのリストが常に非常に短い場合を除く)。また、ファイルを更新しようとしているときにプロセスがクラッシュした場合、その場で更新を行うことができないため、失敗モードは非常に悪くなります。最善の方法は、一時ファイルに書き込み、元のファイルを削除してから、一時ファイルの名前を変更(または移動)することです。
代わりに、SQLiteの使用を検討する必要があります。テーブルからレコードを削除するか、File
処理されたファイルを追跡するステータスフィールドを設定することができます。