Mercurial > hg > config
view python/fileobj.py @ 761:9e4a21ca48af
add a front end to rst2s5; stub
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Mon, 04 Jan 2016 12:54:51 -0800 |
parents | 95ba5770d2f0 |
children |
line wrap: on
line source
#!/usr/bin/env python """ filename -> file-like object as a decorator """ import optparse import os import sys string = (basestring,) class fileobj(object): def __init__(self, arg, *args, **kwargs): self._args = [arg] + list(args) self._kwargs = kwargs # mode, filename, ... # function self.func = arg if not args else None def __call__(self, *args, **kwargs): if self.func is None: raise NotImplementedError else: if len(args) and isinstance(args[0], string): args = list(args) with file(args[0], 'w') as fp: args[0] =fp return self.func(*args, **kwargs) return self.func(*args, **kwargs) if __name__ == '__main__': # test code import os import tempfile @fileobj def test1(fp): fp.write('foo') filename = tempfile.mktemp() print filename assert not os.path.exists(filename) test1(filename) assert os.path.exists(filename) print file(filename).read()