Read partial data
================================================================================

When you are dealing with huge amount of data, obviously you would not like to
fill up your memory with those data. Here is a the feature to support pagination
of your data.

.. testcode::
   :hide:

    >>> import sys
    >>> if sys.version_info[0] < 3:
    ...     from StringIO import StringIO
    ... else:
    ...     from io import StringIO
    >>> from pyexcel_io._compact import OrderedDict

Let's assume the following file is a huge csv file:

.. code-block:: python

   >>> import datetime
   >>> from pyexcel_io import save_data
   >>> data = [
   ...     [1, 21, 31],
   ...     [2, 22, 32],
   ...     [3, 23, 33],
   ...     [4, 24, 34],
   ...     [5, 25, 35],
   ...     [6, 26, 36]
   ... ]
   >>> save_data("your_file.csv", data)

And let's pretend to read partial data:

.. code-block:: python

   >>> from pyexcel_io import get_data
   >>> data = get_data("your_file.csv", start_row=2, row_limit=3)
   >>> data['your_file.csv']
   [[3, 23, 33], [4, 24, 34], [5, 25, 35]]

And you could as well do the same for columns:

.. code-block:: python

   >>> data = get_data("your_file.csv", start_column=1, column_limit=2)
   >>> data['your_file.csv']
   [[21, 31], [22, 32], [23, 33], [24, 34], [25, 35], [26, 36]]

Obvious, you could do both at the same time:

.. code-block:: python

   >>> data = get_data("your_file.csv",
   ...     start_row=2, row_limit=3,
   ...     start_column=1, column_limit=2)
   >>> data['your_file.csv']
   [[23, 33], [24, 34], [25, 35]]

The pagination support is available across all pyexcel-io plugins.

.. testcode::
   :hide:

   >>> import os
   >>> if os.path.exists("your_file.csv"):
   ...     os.unlink("your_file.csv")
