Перейти к основному содержимому

Библиотека aiofiles

Работа с файлами является блокирующей, поэтому в асинхронных приложениях использование стандартных функций по взаимодействию с файловой системой может привести к потере производительности.

Для этого была создана библиотека aiofiles, которая позволяет сделать все эти операции неблокирующими и поддерживающими конструкции async/await.

Установка

$ pip install aiofiles

Использование

Открытие файла происходит с помощью aiofiles.open(). Далее мы можем работать с возвращаемым объектом файла с помощью корутин:

  • read, readline, readlines, readable
  • write, writelines, writable
  • truncate
  • close
  • seek, tell
  • fileno
  • flush
  • isatty
import aiofiles
import asyncio


async def main():
async with aiofiles.open("hello.txt", "w") as file:
await file.write("Hello\nworld!")

async with aiofiles.open("hello.txt", "r") as file:
content = await file.read()
print(content)
await file.seek(0)

async for line in file:
print("-", line.rstrip("\n"))

print(await file.tell())


if __name__ == '__main__':
asyncio.run(main())
Hello
world!
- Hello
- world!
12