Модуль prettytable
- полезен при создании простых таблиц и вывода их в терминал или текстовый файл. Он был вдохновлен таблицами ASCII, используемыми в оболочке PostgreSQL.
Возможности модуля prettytable
:
Установка модуля PrettyTable
в виртуальное окружение:
# создаем виртуальное окружение $ python3 -m venv .venv --prompt VirtualEnv # активируем виртуальное окружение $ source .venv/bin/activate # ставим модуль prettytable (VirtualEnv) Idea@Centre:~$ python -m pip install -U prettytable
Для начала, необходимо создать экземпляр PrettyTable()
, а затем можно добавлять в него некоторые данные. Eсть несколько вариантов добавления данных.
# импорт установленного модуля from prettytable import PrettyTable # создание экземпляра mytable = PrettyTable()
Можно добавлять данные по одной строке за раз. Для этого необходимо сначала установить имена полей, используя атрибут PrettyTable.field_names
, а затем добавлять строки по одной, используя метод PrettyTable.add_row()
:
from prettytable import PrettyTable mytable = PrettyTable() # имена полей таблицы mytable.field_names = ["City name", "Area", "Population", "Annual Rainfall"] # добавление данных по одной строке за раз mytable.add_row(["Adelaide", 1295, 1158259, 600.5]) mytable.add_row(["Brisbane", 5905, 1857594, 1146.4]) mytable.add_row(["Darwin", 112, 120900, 1714.7]) mytable.add_row(["Hobart", 1357, 205556, 619.5]) mytable.add_row(["Sydney", 2058, 4336374, 1214.8]) mytable.add_row(["Melbourne", 1566, 3806092, 646.9]) mytable.add_row(["Perth", 5386, 1554769, 869.4]) # вывод таблицы в терминал print(mytable)
Вид вывода таблицы в терминале
+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ | Adelaide | 1295 | 1158259 | 600.5 | | Brisbane | 5905 | 1857594 | 1146.4 | | Darwin | 112 | 120900 | 1714.7 | | Hobart | 1357 | 205556 | 619.5 | | Sydney | 2058 | 4336374 | 1214.8 | | Melbourne | 1566 | 3806092 | 646.9 | | Perth | 5386 | 1554769 | 869.4 | +-----------+------+------------+-----------------+
Далее будем создавать эту-же таблицу, только разными способами.
Когда есть список строк, то можно добавить их за один раз с помощью метода PrettyTable.add_rows()
:
from prettytable import PrettyTable mytable = PrettyTable() # имена полей таблицы mytable.field_names = ["City name", "Area", "Population", "Annual Rainfall"] # добавление списка строк mytable.add_rows( [ ["Adelaide", 1295, 1158259, 600.5], ["Brisbane", 5905, 1857594, 1146.4], ["Darwin", 112, 120900, 1714.7], ["Hobart", 1357, 205556, 619.5], ["Sydney", 2058, 4336374, 1214.8], ["Melbourne", 1566, 3806092, 646.9], ["Perth", 5386, 1554769, 869.4], ] ) print(mytable)
Также можно добавлять данные по одному столбцу за раз. Для этого необходимо использовать метод PrettyTable.add_column()
, который принимает два аргумента - строку, которая является именем поля таблицы добавляемого столбца, и список или кортеж, содержащий данные столбца:
from prettytable import PrettyTable mytable = PrettyTable() # Добавление колонки таблицы с именем 'City name' mytable.add_column("City name", ["Adelaide", "Brisbane", "Darwin", "Hobart", "Sydney", "Melbourne", "Perth"]) # Добавление колонки таблицы с именем 'Area' mytable.add_column("Area", [1295, 5905, 112, 1357, 2058, 1566, 5386]) # Добавление колонки таблицы с именем 'Population' mytable.add_column("Population", [1158259, 1857594, 120900, 205556, 4336374, 3806092, 1554769]) # Добавление колонки таблицы с именем 'Annual Rainfall' mytable.add_column("Annual Rainfall", [600.5, 1146.4, 1714.7, 619.5, 1214.8, 646.9, 869.4]) print(mytable)
Если данные таблицы хранятся в файле CSV, то можно прочитать эти данные и добавить в таблицу PrettyTable()
следующим образом:
# импорт загрузчика `from_csv` from prettytable import from_csv with open("myfile.csv") as fp: # создание таблицы из `myfile.csv` mytable = from_csv(fp) print(mytable)
Если данные таблицы хранятся в базе данных, к которой можно получить доступ с помощью модуля имеющего Python DB-API (например, база данных SQLite, доступная с помощью модуля sqlite3
), то можно создать экземпляр PrettyTable()
с данными, используя объект курсора, например:
import sqlite3 # импорт загрузчика `from_db_cursor` from prettytable import from_db_cursor connection = sqlite3.connect("mydb.db") cursor = connection.cursor() cursor.execute("SELECT field1, field2, field3 FROM my_table") # создание таблицы из объекта курсора mytable = from_db_cursor(cursor) print(mytable)