truncating a file from the top down

2005-03-29 Thread rbt
Hi guys,
I need to truncate a file from the top down. I imagine doing something 
like this:

if os.stat says the file is too big:
read the file
trim = only keep the last 2008 bytes (This is where I get stuck)
write trim back out to the original file
Would someone demonstrate the *best* most efficient way of doing this?
Thanks,
rbt
--
http://mail.python.org/mailman/listinfo/python-list


Re: truncating a file from the top down

2005-03-29 Thread Mike Rovner
rbt wrote:
if os.stat says the file is too big:
read the file
trim = only keep the last 2008 bytes (This is where I get stuck)
write trim back out to the original file
Would someone demonstrate the *best* most efficient way of doing this?
if os.stat says the_file is too big:
  fh = open(the_file, 'rb')
  fh.seek(2008, 2)
  data = fh.read()
  fh.close()
  assert len(data)==2008 # you may want some error processing here
  fh = open(the_file, 'wb')
  fh.write(data)
  fh.close()
/m
--
http://mail.python.org/mailman/listinfo/python-list


Re: truncating a file from the top down

2005-03-29 Thread Fredrik Lundh
Mike Rovner wrote:

 if os.stat says the_file is too big:
   fh = open(the_file, 'rb')
   fh.seek(2008, 2)

should be

fh.seek(-2008, 2)

right?

   data = fh.read()
   fh.close()
   assert len(data)==2008 # you may want some error processing here
   fh = open(the_file, 'wb')
   fh.write(data)
   fh.close()

or

if os.path.getsize(the_file)  TOO_BIG:
fh = open(the_file, 'rb+')
fh.seek(-2008, 2)
data = fh.read()
fh.seek(0) # rewind
fh.write(data)
fh.truncate()
fh.close()

/F 



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: truncating a file from the top down

2005-03-29 Thread Mike Rovner
Right. Thanks for the correction.
Fredrik Lundh wrote:
Mike Rovner wrote:

if os.stat says the_file is too big:
 fh = open(the_file, 'rb')
 fh.seek(2008, 2)

should be
fh.seek(-2008, 2)
right?

 data = fh.read()
 fh.close()
 assert len(data)==2008 # you may want some error processing here
 fh = open(the_file, 'wb')
 fh.write(data)
 fh.close()

or
if os.path.getsize(the_file)  TOO_BIG:
fh = open(the_file, 'rb+')
fh.seek(-2008, 2)
data = fh.read()
fh.seek(0) # rewind
fh.write(data)
fh.truncate()
fh.close()
/F 


--
http://mail.python.org/mailman/listinfo/python-list


Re: truncating a file from the top down

2005-03-29 Thread rbt
Mike Rovner wrote:
Right. Thanks for the correction.
Fredrik Lundh wrote:
Mike Rovner wrote:

if os.stat says the_file is too big:
 fh = open(the_file, 'rb')
 fh.seek(2008, 2)

should be
fh.seek(-2008, 2)
right?

 data = fh.read()
 fh.close()
 assert len(data)==2008 # you may want some error processing here
 fh = open(the_file, 'wb')
 fh.write(data)
 fh.close()

or
if os.path.getsize(the_file)  TOO_BIG:
fh = open(the_file, 'rb+')
fh.seek(-2008, 2)
data = fh.read()
fh.seek(0) # rewind
fh.write(data)
fh.truncate()
fh.close()
/F


Thanks for the info guys!
--
http://mail.python.org/mailman/listinfo/python-list