Skip to main content

Asynchronous file operations.

Project description

Travis CI Latest Version https://img.shields.io/pypi/wheel/aiofile.svg https://img.shields.io/pypi/pyversions/aiofile.svg https://img.shields.io/pypi/l/aiofile.svg

Real asynchronous file operations with asyncio support.

Status

Development - Stable

Features

  • AIOFile has no internal pointer. You should pass offset and chunk_size for each operation or use helpers (Reader or Writer).

  • For POSIX (MacOS X and Linux) using implementaion based on aio.h (with Cython).

  • For non-POSIX systems using thread-based implementation

Code examples

Totally async read and write:

import asyncio
from aiofile import AIOFile, Reader, Writer

async def main(loop):
    aio_file = await AIOFile("/tmp/hello.txt", 'w+', loop=loop)

    await aio_file.write(b"Hello ")
    await aio_file.write(b"world", offset=7)
    await aio_file.fsync()

    print(await aio_file.read())

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

Write and read with helpers:

import asyncio
from aiofile import AIOFile, Reader, Writer

async def main(loop):
    aio_file = await AIOFile("/tmp/hello.txt", 'w+', loop=loop)

    writer = Writer(aio_file)
    reader = Reader(aio_file, chunk_size=8)

    await writer(b"Hello")
    await writer(b" ")
    await writer(b"World")
    await aio_file.flush()

    async for chunk in reader:
        print(chunk)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

or use async context manager:

import asyncio
from aiofile import AIOFile, Reader, Writer

async def main(loop):
    async with AIOFile("/tmp/hello.txt", 'w+', loop=loop) as aio_file:
        writer = Writer(aio_file)
        reader = Reader(aio_file, chunk_size=8)

        await writer(b"Hello")
        await writer(b" ")
        await writer(b"World")
        await aio_file.flush()

        async for chunk in reader:
            print(chunk)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

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

aiofile-1.2.1.tar.gz (75.3 kB view details)

Uploaded Source

Built Distributions

aiofile-1.2.1-cp36-cp36m-manylinux1_x86_64.whl (183.8 kB view details)

Uploaded CPython 3.6m

aiofile-1.2.1-cp36-cp36m-macosx_10_6_intel.whl (97.9 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

aiofile-1.2.1-cp35-cp35m-manylinux1_x86_64.whl (184.5 kB view details)

Uploaded CPython 3.5m

aiofile-1.2.1-cp35-cp35m-macosx_10_6_intel.whl (96.7 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

aiofile-1.2.1-cp34-cp34m-manylinux1_x86_64.whl (189.7 kB view details)

Uploaded CPython 3.4m

aiofile-1.2.1-cp34-cp34m-macosx_10_6_intel.whl (97.0 kB view details)

Uploaded CPython 3.4m macOS 10.6+ intel

File details

Details for the file aiofile-1.2.1.tar.gz.

File metadata

  • Download URL: aiofile-1.2.1.tar.gz
  • Upload date:
  • Size: 75.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for aiofile-1.2.1.tar.gz
Algorithm Hash digest
SHA256 2134cabed0d65aa2ccde5e3cfbb25ec66471a98e8a125e6be3345d6f51b6d1d8
MD5 ac14af05c82e5602573bd5d726f3d0c6
BLAKE2b-256 d303b65ce7b1f3de824c8369a9a8b516cc2abfe2fdc1d08689f70a9d96db6af4

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d82475dd0fbc795208b25248fdfc6437df0d9c64727240cb2ca12ca18b17c91a
MD5 3c31c0382142e8938628470aa1c517ff
BLAKE2b-256 d4a6f37c12d085fda0bef4a6d4c60c224ea6232e0013ddfe83b7d8dacc9cfb35

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 b5e1e3a6bfb79ec681898447cccad79d59b112294053c3e59579c932f08bf6e7
MD5 a6f516e559abcf1d4cb4a62fb725b450
BLAKE2b-256 f766d428278432c51e16152ee09ff5d900dbab03e6f54d07f786d5aa75c81831

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2d5fda6d816819c1e61e6100749d9690aed0e1895fd9eca9858fc2c2d8c21542
MD5 f66ee98704b0be9d1fca4247a8773247
BLAKE2b-256 18e582353dc4022d859b280d3afa5417a6067915b9de57e64c5801dfda36c7d1

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 bcc55b5603f6773d10562a3b0a47a60f80347fe5fe4a3b550cef2acb1670b05a
MD5 7f918343414652b3a650f957d2e98987
BLAKE2b-256 be0abdb3d36fa9e5b3daf881ddf3481a7d8b3791c53f8caa38c5cdfa525e825c

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 79e2ffc431c8572b63d81d9a94ee52a109c0f92210b0baade691c468c190aea5
MD5 859b041bf12e6209007fde1ced28a5f2
BLAKE2b-256 410e942bfcbb8ec60441e49dbe350f6557d6ccb33b34809a18001cca28826ab1

See more details on using hashes here.

File details

Details for the file aiofile-1.2.1-cp34-cp34m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for aiofile-1.2.1-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 508550ead9ffff0d8a71d06a2bdee855d0066666c73480cf2cde33b1a7e9a83e
MD5 c886b11c8764879318fbb0aca0421403
BLAKE2b-256 08aff4778a44299ab0f6fa348ed3974fd3ae174107d9f277b8d645e52675f75c

See more details on using hashes here.

Supported by

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