def _write_header(self, hdr, source): """Writes the header. hdr is the current header to be written and source is a file or file-like object which represents the file. """ packed_hdr = pack(NewAsciiFormat.FORMAT, *hdr) self._fobj.write(packed_hdr) self._fobj.write(hdr.name + '\0') # write padding offset = NewAsciiFormat.LEN + hdr.namesize pad = NewAsciiFormat.calculate_padding(offset) if pad > 0: self._fobj.write('\0' * pad) self._bytes_written += pad for data in iter_read(source): self._fobj.write(data) # write padding pad = NewAsciiFormat.calculate_padding(hdr.filesize) if pad > 0: self._fobj.write('\0' * pad) self._bytes_written += pad self._bytes_written += NewAsciiFormat.LEN + hdr.namesize + hdr.filesize
def __iter__(self, size=-1): """Iterates over the file""" return iter_read(self, bufsize=self.stream_bufsize, size=size)