Python, in-memory файловые потоки

03.12.2021

Для создания файловых потоков без использования дисковой подсистемы в Python можно воспользоваться модулем io.

В качестве примера рассмотрим задачу, в которой исходный список словарей необходимо преобразовать в CSV-формат методами библиотеки pandas. При этом сохранять результат работы функции to_csv непосредственно на диск нельзя.

Вариант реализации:

import io

import pandas as pd

# Исходные данные.
data = [
    {'a': 1, 'b': 2, 'c': 3},
    {'a': 4, 'b': 5, 'c': 6},
]

# Датафрейм pandas.
df = pd.DataFrame(data)

# Буфер данных.
buf = io.StringIO()

# Преобразование датафрейма в csv-формат.
r = df.to_csv(buf, index=False, sep=',')

# Сдвиг позиции буфера в начало.
buf.seek(0)

# Чтение всего буфера. Результат - строка.
print(buf.read())