import os filename = "sparse" data = b'x' * 4096 offsets = ( 4096, 12288, 20480, 28672, 36864, 45056, 53248, 61440, 69632, 77824,) with open(filename, "wb") as fp: for offset in offsets: fp.seek(offset) fp.write(data) fp.seek(86016) fp.write(b'') fp.seek(86016) fp.truncate() st = os.stat(filename) a = st.st_blocks * 512 b = st.st_size if a < b: print("succeeded to created a sparse file:" " %r (st_blocks * 512) < %r (st_size)" % (a, b)) else: print("FAILED to created a sparse file: " "%r (st_blocks * 512) >= %r (st_size)" % (a, b)) #os.unlink(filename)