patternpythonMinor
Temporary file utility class in Python
Viewed 0 times
filetemporaryutilitypythonclass
Problem
I decided to write a tiny class to automatically write and delete a file given filename and content. It is intended to make testing IO less verbose. I include a small example usage.
temporary.pyimport os
class Temporary:
def __init__(self, name, content):
self.name = name
self.content = content
def __enter__(self):
with open(self.name, 'w+') as f:
f.write(self.content)
def __exit__(self,_,__,___):
os.remove(self.name)first_word.pyimport doctest
from temporary import Temporary
def first_word_of_each_line(filename):
"""
>>> txt = '\\n'.join(['first line', 'second line', 'bar bar'])
>>> with Temporary('foo.txt', txt): first_word_of_each_line('foo.txt')
['first', 'second', 'bar']
"""
with open(filename) as f:
lines = f.read().splitlines()
return [line.split()[0] for line in lines]
if __name__ == "__main__":
doctest.testmod()Solution
There, well, really isn't much to review here, so I have just a couple of points on this.
I hope this helps! If there's anything else that you want me to cover on this, mention it in the comments, and I'll see if I can cover it.
- Add a docstring to the class
Temporary. Describe what this class does in detail, and flesh it out with useful information about arguments as well.
- You're missing some whitespace in between parameters in your
__exit__declaration. It should look like thisdef __exit__(self, _, __, ___).
- You should add a method like
write_to_fileso that the user can change the contents of the file during runtime, before it's deleted.
- As mentioned by @GarethRees, there's already a Python module built for this kind of use,
tempfile.
I hope this helps! If there's anything else that you want me to cover on this, mention it in the comments, and I'll see if I can cover it.
Context
StackExchange Code Review Q#91154, answer score: 3
Revisions (0)
No revisions yet.