.. image:: https://github.com/s-raza/csvio/blob/master/docs/source/_static/csvio_logo_240x160px.png?raw=True
:align: center
:target: https://github.com/s-raza/csvio
:alt: csvio Logo
csvio: Python Library for processing CSV files
==============================================
.. image:: https://img.shields.io/github/license/s-raza/csvio?color=bright
:alt: GitHub License
:target: https://github.com/s-raza/csvio/blob/master/LICENSE
.. image:: https://img.shields.io/badge/python-3.8%2B-bright
:alt: Python Versions
.. image:: https://img.shields.io/readthedocs/csvio/latest
:alt: Readthedocs
:target: https://csvio.readthedocs.io/en/latest
csvio is a Python library that provides a wrapper around Python's built in
``csv.DictReader`` and ``csv.DictWriter``, for ease of reading and
writing CSV files.
Rows in a CSV are represented and processed as a list of dictionaries. Each
item in this list is a dictionary that represents a row. The key, value pairs
in each dictionary is a mapping between the column and its associated row value
from the CSV.
Installation
------------
.. code-block:: bash
pip install csvio
Documentation
-------------
`Readthedocs <https://csvio.readthedocs.io>`_
Reading CSVs
------------
*CSV file contents:*
.. code-block:: bash
Supplier,Fruit,Quantity
Big Apple,Apple,1
Big Melons,Melons,2
Long Mangoes,Mango,3
Small Strawberries,Strawberry,4
.. code-block:: python
>>> from csvio import CSVReader
>>> reader = CSVReader("fruit_stock.csv")
>>> reader.fieldnames
['Supplier', 'Fruit', 'Quantity']
>>> len(reader.rows)
4
>>> import json
>>> print(json.dumps(reader.rows, indent=4))
[
{
"Supplier": "Big Apple",
"Fruit": "Apple",
"Quantity": "1"
},
{
"Supplier": "Big Melons",
"Fruit": "Melons",
"Quantity": "2"
},
{
"Supplier": "Long Mangoes",
"Fruit": "Mango",
"Quantity": "3"
},
{
"Supplier": "Small Strawberries",
"Fruit": "Strawberry",
"Quantity": "4"
}
]
Writing CSVs
------------
.. code-block:: python
>>> from csvio import CSVWriter
>>> writer = CSVWriter("fruit_stock.csv", fieldnames=["Supplier", "Fruit", "Quantity"])
>>> row1 = {"Supplier": "Big Apple", "Fruit": "Apple", "Quantity": 1}
>>> writer.add_rows(row1)
>>> rows2_3_4 = [
... {"Supplier": "Big Melons", "Fruit": "Melons", "Quantity": 2},
... {"Supplier": "Long Mangoes", "Fruit": "Mango", "Quantity": 3},
... {"Supplier": "Small Strawberries", "Fruit": "Strawberry", "Quantity": 4}
... ]
>>> writer.add_rows(rows2_3_4)
>>> len(writer.pending_rows)
4
>>> len(writer.rows)
0
>>> writer.flush()
>>> len(writer.pending_rows)
0
>>> len(writer.rows)
4
Once flush is called a CSV file with the name *fruit_stock.csv* will be
written with the following contents.
.. code-block:: bash
Supplier,Fruit,Quantity
Big Apple,Apple,1
Big Melons,Melons,2
Long Mangoes,Mango,3
Small Strawberries,Strawberry,4
.. ignore-below-marker
`Readthedocs for more example code <https://csvio.readthedocs.io>`_