Created
September 19, 2019 18:31
-
-
Save earonesty/ddd5ebe912916628cf0e28796489b706 to your computer and use it in GitHub Desktop.
Arbitrarily large fake filelike python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was useful when testing things like upload limits, because I didn't have enough RAM to use a BytesIO and properly break things.