Skip to content

Instantly share code, notes, and snippets.

@earonesty
Created September 19, 2019 18:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save earonesty/ddd5ebe912916628cf0e28796489b706 to your computer and use it in GitHub Desktop.
Save earonesty/ddd5ebe912916628cf0e28796489b706 to your computer and use it in GitHub Desktop.
Arbitrarily large fake filelike python
class FakeFile:
def __init__(self, size, repeat=b'0'):
self.loc = 0
self.size = size
self.repeat = repeat
self.closed = False
def fileno(self):
raise OSError()
def write(self, data):
raise OSError()
def read(self, size=None):
if size is None:
size = self.size
end = min(self.loc + size, self.size)
size = end - self.loc
if size <= 0:
return b''
self.loc += size
return self.repeat * size
def seek(self, offset, whence=SEEK_SET):
if whence == SEEK_SET:
self.loc = offset
elif whence == SEEK_END:
self.loc = self.size - offset
elif whence == SEEK_CUR:
self.loc += offset
return
def seekable(self):
return True
def close(self):
self.closed = True
def tell(self):
return self.loc
@earonesty
Copy link
Author

This was useful when testing things like upload limits, because I didn't have enough RAM to use a BytesIO and properly break things.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment