Skip to main content

simple sftp reader

Project description

🌽💪 Cornflex 🌽💪

A lightweight SFTP reader built on top of paramiko and polars. Connects to remote servers and pulls files down as strings, Polars DataFrames, or raw text.


Installation

pip install paramiko polars chardet

Then drop cornflex/ into your project.


Usage

from cornflex import SFTPReader

Connect with password

reader = SFTPReader(
    hostname="sftp.example.com",
    username="myuser",
    password="mypassword",
)

Connect with PEM key

reader = SFTPReader(
    hostname="sftp.example.com",
    username="myuser",
    pem_file="/path/to/key.pem",
)

Methods

get_files(remote_path, file_pattern)

Lists files in a remote directory. Supports glob-style patterns.

reader.get_files(remote_path="/data", file_pattern="*.csv")
# ["orders_2024.csv", "users_2024.csv"]

get_csv_file(file_name, remote_path, column_names)

Fetches a CSV and returns it as a Polars DataFrame.

reader.connect()
df = reader.get_csv_file("orders.csv", remote_path="/data")

# Override column names (useful when file has no header)
df = reader.get_csv_file("orders.csv", remote_path="/data", column_names=["id", "amount", "date"])
reader.close()

get_xml_file_to_string(file_name, remote_path)

Fetches an XML file and returns it as a string.

reader.connect()
xml = reader.get_xml_file_to_string("feed.xml", remote_path="/exports")
reader.close()

file_to_string(file_name, remote_path, encoding)

Fetches any file as a string. Auto-detects encoding via chardet if not specified.

reader.connect()
content = reader.file_to_string("report.txt", remote_path="/reports")

# Force encoding
content = reader.file_to_string("report.txt", encoding="latin-1")
reader.close()

Notes

  • get_files() handles connect/close internally.
  • For all other methods, call connect() before and close() after.
  • Either password or pem_file must be provided — not both, not neither.
  • get_csv_file assumes UTF-8. Use file_to_string for other encodings.

Dependencies

Package Purpose
paramiko SSH/SFTP connection
polars DataFrame output
chardet Encoding detection

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cornflex-1.1.2.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cornflex-1.1.2-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file cornflex-1.1.2.tar.gz.

File metadata

  • Download URL: cornflex-1.1.2.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cornflex-1.1.2.tar.gz
Algorithm Hash digest
SHA256 8b08f1d85e629a36c811b5f5b72f283129018aecb1d1fcd2aca767bfb8723929
MD5 ef9d45f521bcdb4d905fe132952cabef
BLAKE2b-256 4e720dfa479e6c9f381a368a85af96d009ae3bab96e321e7ddeac9a4c931acb6

See more details on using hashes here.

File details

Details for the file cornflex-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: cornflex-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cornflex-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 537f60d3e77e163547951dfdbd09d1e6b978bbc4876ed62cda06bf7a170bf482
MD5 bdc95edf2c717be74ba220db98ea064e
BLAKE2b-256 36dcad10e154500cba263d7ed3cdf510ffa7f6c8d36c4ab211db1f58fe7fa222

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page