~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/atomicfile.py

  • Committer: Martin Pool
  • Date: 2005-05-10 03:50:45 UTC
  • Revision ID: mbp@sourcefrog.net-20050510035045-c70b89a0b0a705b7
- External-command patch from mpe

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
    Open this as for a regular file, then use commit() to move into
25
25
    place or abort() to cancel.
26
26
 
27
 
    An encoding can be specified; otherwise the default is ascii.
 
27
    You may wish to wrap this in a codecs.EncodedFile to do unicode
 
28
    encoding.
28
29
    """
29
30
 
30
 
    def __init__(self, filename, mode='wb', encoding=None):
 
31
    def __init__(self, filename, mode='wb'):
31
32
        if mode != 'wb' and mode != 'wt':
32
33
            raise ValueError("invalid AtomicFile mode %r" % mode)
33
34
 
37
38
        self.realfilename = filename
38
39
        
39
40
        self.f = open(self.tmpfilename, mode)
40
 
 
41
 
        if encoding:
42
 
            import codecs
43
 
            self.f = codecs.EncodedFile(self.f, encoding)
44
 
        
45
41
        self.write = self.f.write
46
 
        self.closed = property(self.f.closed)
47
42
 
48
43
    def commit(self):
49
44
        import sys, os
58
53
        self.f.close()
59
54
        os.remove(self.tmpfilename)
60
55
        
61