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.0.tar.gz (74.9 kB view details)

Uploaded Source

Built Distributions

aiofile-1.2.0-cp36-cp36m-manylinux1_x86_64.whl (183.5 kB view details)

Uploaded CPython 3.6m

aiofile-1.2.0-cp36-cp36m-macosx_10_6_intel.whl (97.6 kB view details)

Uploaded CPython 3.6m macOS 10.6+ intel

aiofile-1.2.0-cp35-cp35m-manylinux1_x86_64.whl (184.2 kB view details)

Uploaded CPython 3.5m

aiofile-1.2.0-cp35-cp35m-macosx_10_6_intel.whl (96.4 kB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

aiofile-1.2.0-cp34-cp34m-manylinux1_x86_64.whl (189.4 kB view details)

Uploaded CPython 3.4m

aiofile-1.2.0-cp34-cp34m-macosx_10_6_intel.whl (96.7 kB view details)

Uploaded CPython 3.4m macOS 10.6+ intel

File details

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

File metadata

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

File hashes

Hashes for aiofile-1.2.0.tar.gz
Algorithm Hash digest
SHA256 f0145d345ab3113bb8e4bbefd9dca635cd4d8af459d769d34f0c5e639c6401e1
MD5 6ef85a212b3829018830b8850313ed4f
BLAKE2b-256 c60a5c32c1613f3bad674a3c7dd544a97bfc2a04d1e3d707c2d6d772dc62ebd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b6561c9e074617549afd3ac2cd13fd9fe5b1bdd8b7841b874a17dfb4f4416f02
MD5 42d844a22e8a8a11d3d2d180329874b1
BLAKE2b-256 a2fa07c795d34cd6b371f872fca55758f20370f793c4b199aa884f52bc84f369

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 98d72c999423fbf8231127d18ad4fadd8c434715731c2bb48555bbbfa79ae2c7
MD5 88affc04ec04499f69d9df4c518a2756
BLAKE2b-256 00c1b6ade812646b1ef7d1ffc2d660f840d892b53366e61a951e49bdb42d93bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9f78519b2e5d03dc6a6ffdc352b565cb8391ddc78a2a4cf519fd182ea2ce64c0
MD5 a247dac5d804e2f7a9ada89393f2e5b9
BLAKE2b-256 16e800edeb297ad22b1c2f1f564102fddca804d5524eae277164637637573ca3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 33f1d807bbe5b6147c562e70e0921c1fd3797f092294e77090e7b2033f4fd824
MD5 002d559e3fba25a2177a8e2bc295c5ab
BLAKE2b-256 f0aa50e3aa65d54cf278e95babe37dcd0fe457ec28afe10aa850f3c5644ffe85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9e470a305014ad591d432e561b625a173a6c4bfb6061a5338ba0cd23b92f9d64
MD5 f67c456c06d295854db6736bade81beb
BLAKE2b-256 e49a6238fd0128e50e5adb653a6612bbdf84b5d31e84e87cc1d443119eadd623

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aiofile-1.2.0-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 6cb2821473909c58ca630ff558c2b94123bab6ec6f45f6cf8935733cae53a28e
MD5 2900766dac9adfd4808391fd73617a5a
BLAKE2b-256 86bd6ba40a0ca7be47e056bf441b5182e259abb6707bc3319732d1e39e3cf40b

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