Hacked By AnonymousFox
�
{fc @ s5 d Z d d l Z d d l Z d d d � � YZ d S( s�
File-like objects that read from or write to a bsddb record.
This implements (nearly) all stdio methods.
f = DBRecIO(db, key, txn=None)
f.close() # explicitly release resources held
flag = f.isatty() # always false
pos = f.tell() # get current position
f.seek(pos) # set current position
f.seek(pos, mode) # mode 0: absolute; 1: relative; 2: relative to EOF
buf = f.read() # read until EOF
buf = f.read(n) # read up to n bytes
f.truncate([size]) # truncate file at to at most size (default: current pos)
f.write(buf) # write at current position
f.writelines(list) # for line in list: f.write(line)
Notes:
- fileno() is left unimplemented so that code which uses it triggers
an exception early.
- There's a simple test set (see end of this file) - not yet updated
for DBRecIO.
- readline() is not implemented yet.
From:
Itamar Shtull-Trauring <itamar@maxnm.com>
i����Nt DBRecIOc B st e Z d
d � Z d � Z d � Z d d � Z d � Z d d � Z d Z d
d � Z
d
� Z d � Z d � Z
RS( c C sC | | _ | | _ | | _ d | _ d | _ d | _ d | _ d S( Ni ( t dbt keyt txnt Nonet lent post closedt softspace( t selfR R R ( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt __init__# s c C s% | j s! d | _ | ` | ` n d S( Ni ( R R R ( R ( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt close, s c C s | j r t d � n d S( Ns I/O operation on closed filei ( R t
ValueError( R ( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt isatty1 s i c C sc | j r t d � n | d k r1 | | j } n | d k rM | | j } n t d | � | _ d S( Ns I/O operation on closed filei i i ( R R R R t max( R R t mode( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt seek6 s c C s | j r t d � n | j S( Ns I/O operation on closed file( R R R ( R ( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt tell? s i����c C s� | j r t d � n | d k r- | j } n t | j | | j � } | | j } | j j | j d | j d | d | j �} | | _ | S( Ns I/O operation on closed filei R t dlent doff( R R R t minR R t getR R ( R t nt newposR t r( ( s% /usr/lib64/python2.7/bsddb/dbrecio.pyt readD s
- s|
def readline(self, length=None):
if self.closed:
raise ValueError, "I/O operation on closed file"
if self.buflist:
self.buf = self.buf + string.joinfields(self.buflist, '')
self.buflist = []
i = string.find(self.buf, '
', self.pos)
if i < 0:
newpos = self.len
else:
newpos = i+1
if length is not None:
if self.pos + length < newpos:
newpos = self.pos + length
r = self.buf[self.pos:newpos]
self.pos = newpos
return r
def readlines(self, sizehint = 0):
total = 0
lines = []
line = self.readline()
while line:
lines.append(line)
total += len(line)
if 0 < sizehint <= total:
break
line = self.readline()
return lines
c C s� | j r t d � n | d k r- | j } n<