diff --git a/s3fs/core.py b/s3fs/core.py index 889fdb0a..a589997b 100644 --- a/s3fs/core.py +++ b/s3fs/core.py @@ -2296,11 +2296,13 @@ def __init__(self, fs, path, mode): self.mode = mode self.r = None self.loc = 0 + self.size = None async def read(self, length=-1): if self.r is None: bucket, key, gen = self.fs.split_path(self.path) r = await self.fs._call_s3("get_object", Bucket=bucket, Key=key) + self.size = int(r["ResponseMetadata"]["HTTPHeaders"]["content-length"]) self.r = r["Body"] out = await self.r.read(length) self.loc += len(out) diff --git a/s3fs/tests/test_s3fs.py b/s3fs/tests/test_s3fs.py index d135356e..fc65f70b 100644 --- a/s3fs/tests/test_s3fs.py +++ b/s3fs/tests/test_s3fs.py @@ -2614,6 +2614,7 @@ async def read_stream(): f = await fs.open_async(fn, mode="rb", block_seze=1000) while True: got = await f.read(1000) + assert f.size == len(data) assert f.tell() if not got: break