HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythonMinor

Temporary file utility class in Python

Submitted by: @import:stackexchange-codereview··
0
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.py

import 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.py

import 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.

  • 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 this def __exit__(self, _, __, ___).



  • You should add a method like write_to_file so 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.