move yield_chunks to common.py
[~helmut/crossqa.git] / common.py
index bb8b7a4..552b10a 100644 (file)
--- a/common.py
+++ b/common.py
@@ -21,3 +21,12 @@ def decompress_stream(iterable, decompressor):
         yield data
     if hasattr(decompressor, "flush"):
         yield decompressor.flush()
+
+def yield_chunks(filelike, chunksize=65536):
+    """Read the given file in chunks of the given size. Returns an itrable
+    of contents. If the file is binary, it yields bytes, otherwise str."""
+    while True:
+        data = filelike.read(chunksize)
+        if not data:
+            break
+        yield data