Skip to main content

No project description provided

Project description


S3Path provide a Python convenient File-System/Path like interface for AWS S3 Service using boto3 S3 resource as a driver.

Like pathlib, but for S3 Buckets

AWS S3 is among the most popular cloud storage solutions. It's object storage, is built to store and retrieve various amounts of data from anywhere.

Currently, Python developers use Boto3 as the default API to connect / put / get / list / delete files from S3.

S3Path blends Boto3's ease of use and the familiarity of pathlib api.

Basic use:

The following example assumes an s3 bucket setup as specified bellow:

.. code:: bash

$ aws s3 ls s3://pypi-proxy/

2018-04-24 22:59:59        186 requests/index.html
2018-04-24 22:59:57     485015 requests/requests-2.9.1.tar.gz
2018-04-24 22:35:01      89112 boto3/boto3-1.4.1.tar.gz
2018-04-24 22:35:02        180 boto3/index.html
2018-04-24 22:35:19    3308919 botocore/botocore-1.4.93.tar.gz
2018-04-24 22:35:36        188 botocore/index.html

Importing the main class:

.. code:: python

from s3path import S3Path

Listing "subdirectories" - s3 keys can be split like file-system with a / in s3path we:

.. code:: python

bucket_path = S3Path('/pypi-proxy/') [path for path in bucket_path.iterdir() if path.is_dir()] [S3Path('/pypi-proxy/requests/'), S3Path('/pypi-proxy/boto3/'), S3Path('/pypi-proxy/botocore/')]

Listing html source files in this "directory" tree:

.. code:: python

bucket_path = S3Path('/pypi-proxy/') list(bucket_path.glob('**/*.html')) [S3Path('/pypi-proxy/requests/index.html'), S3Path('/pypi-proxy/boto3/index.html'), S3Path('/pypi-proxy/botocore/index.html')]

Navigating inside a "directory" tree:

.. code:: python

bucket_path = S3Path('/pypi-proxy/') boto3_package_path = bucket_path / 'boto3' / 'boto3-1.4.1.tar.gz' boto3_package_path S3Path('/pypi-proxy/boto3/boto3-1.4.1.tar.gz')

Querying path properties:

.. code:: python

boto3_package_path = S3Path('/pypi-proxy/boto3/boto3-1.4.1.tar.gz') boto3_package_path.exists() True boto3_package_path.is_dir() False boto3_package_path.is_file() True

Opening a "file" (s3 key):

.. code:: python

botocore_index_path = S3Path('/pypi-proxy/botocore/index.html') with as f: print( """

<html> <head> <meta charset="UTF-8"> <title>Package Index</title> </head> <body> botocore-1.4.93.tar.gz
</body> </html> """

Or Simply reading:

.. code:: python

botocore_index_path = S3Path('/pypi-proxy/botocore/index.html') botocore_index_path.read_text() """

<html> <head> <meta charset="UTF-8"> <title>Package Index</title> </head> <body> botocore-1.4.93.tar.gz
</body> </html> """

For pathlib style documentation of all interfaces interface_docs_.

For s3path vs boto3 comparison boto3_comparison_.

For advance features (configurations/s3 parameters) boto3_advance_.

.. _interface_docs: docs/interface.rst .. _boto3_comparison: docs/comparison.rst .. _boto3_advance: docs/advance.rst

Project details

Download files

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

Files for s3path, version 0.1.0
Filename, size File type Python version Upload date Hashes
Filename, size s3path-0.1.0-py3-none-any.whl (11.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size s3path-0.1.0.tar.gz (11.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page