Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

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()
share|improve this question
    
Better to patch open using something like pypi.python.org/pypi/mock –  JaDogg May 19 at 17:28
    
What was wrong with the various temporary file classes in the tempfile module? –  Gareth Rees May 21 at 14:07
    
@GarethRees nothing this is just an exercise with with not intended to be used for serious purposes –  Caridorc May 28 at 18:06

1 Answer 1

up vote 3 down vote accepted

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.