Let's say that I open a file, that didn't previously exist, for writing:
f = open('/tmp/test.txt', 'w')
Once this line is executed the file '/tmp/test.txt' is created. What is the cleanest way to remove (delete) the file with only the file object (f) and not the path?
Full answer:
f = open('/tmp/test.txt', 'w')
f.close()
os.remove(f.name)
You should close file before deleting (documentation says that it throws exception under Windows if the file is opened - didn't check this). f
in your case is just a handle. It is not a file itself, so you can't delete it directly.
You cannot remove a file handle, only a file path, since multiple paths can refer to the same file and some files (like sockets) don't even have paths. Therefore:
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.
However, you should not do that - there's a better way to solve your problem. Use the tempfile module which deletes the file automatically, or just write to /dev/null
if you just need a file handle and don't care about the content being written.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With