import os
class FileWrapper(file):
def __init__(self, *args, **kwargs):
file.__init__(self, *args, **kwargs)
self.force_size = getattr(self, 'force_size', False)
self.initial_read_pos = self.tell()
self.file_size = os.path.getsize(self.name)
def read(self, size=-1):
if self.force_size:
size = self.force_size
data = file.read(self, size)
if not data or size < 0 or size >= self.file_size:
self.seek(self.initial_read_pos)
return data
if __name__ == '__main__':
print "File Exists at start:", os.path.exists("thing.txt")
fd1 = FakeFile("thing.txt", "w")
fd1.write("Hello World!")
fd1.close()
print "File Exists after write:", os.path.exists("thing.txt")
fd2 = FakeFile("thing.txt", "r")
data = fd2.read()
fd2.close()
print "data read:", data
fd3 = FakeFile("thing.txt", "r")
data_single = fd3.read(1)
while data_single:
print "data read:", data_single
data_single = fd3.read(1)
data_beyond = fd3.read()
print "After EOF:", data_beyond
data_too_much = fd3.read(100)
print "Too much?", data_too_much
data_five = fd3.read(5)
print "First Five:", data_five
data_end = fd3.read()
print "End of file:", data_end
fd3.close()
os.remove("thing.txt")