のは、私が以前に執筆のために、存在しなかったファイル、開くことを言ってみましょう:のみPythonのファイルオブジェクトとファイルを削除する
f = open('/tmp/test.txt', 'w')
この行はファイル「/ tmp/testディレクトリに実行された後に。 txt 'が作成されます。ファイルオブジェクト(f)のみでファイルを削除(削除)する最もクリーンな方法は何ですか?
のは、私が以前に執筆のために、存在しなかったファイル、開くことを言ってみましょう:のみPythonのファイルオブジェクトとファイルを削除する
f = open('/tmp/test.txt', 'w')
この行はファイル「/ tmp/testディレクトリに実行された後に。 txt 'が作成されます。ファイルオブジェクト(f)のみでファイルを削除(削除)する最もクリーンな方法は何ですか?
複数のパスがrefer to the same fileといくつかのファイル(ソケットなど)にパスがない場合でも、ファイルハンドルのみを削除することはできません。したがって:
import os
f = open('/tmp/test.txt', 'w')
os.unlink(f.name)
# You can still use f here, it's just only visible for people having a handle.
# close it when you're finished.
しかし、あなたはがあることを行うべきではありません - あなたの問題を解決するためのより良い方法があります。ファイルを自動的に削除するtempfileモジュールを使用するか、ファイルハンドルが必要なだけで書き込まれるコンテンツについて気にしない場合は/dev/null
に書き込みます。あなたはname
メンバーからファイル名を取得し、いつものように削除することができます
:
In [1]: f = open('/tmp/test.txt', 'w')
In [2]: f.name
Out[2]: '/tmp/test.txt'
全答:
f = open('/tmp/test.txt', 'w')
f.close()
os.remove(f.name)
をあなたは削除する前に、ファイルを閉じる必要があります(ドキュメントには、それが下の例外をスローすることを言いますファイルが開かれている場合はWindows - これはチェックされませんでした)。あなたの場合のf
は単なるハンドルです。これはファイル自体ではないため、直接削除することはできません。
必要に応じて、ファイルを作成せずに立ち去ることもできます。必要なものがファイルのようなオブジェクトであれば、ほとんどの場合、ファイルの代わりにio.StringIO
のインスタンスを使用できます。これは、不必要な入出力操作を防ぐのに便利です。
>>> from io import StringIO
>>> f=StringIO()
>>> f.write(u'Hello, world!')
13
>>> f.seek(0)
0
>>> f.read()
u'Hello, world!'
>>> f.close()
+1 - 私は一時ファイルが本当に質問者が必要とするものだと思っています。 –