对异步的文件支持。

aiofiles-ext的Python项目详细描述


https://img.shields.io/pypi/v/aiofiles.svghttps://travis-ci.org/Tinche/aiofiles.svg?branch=masterhttps://coveralls.io/repos/Tinche/aiofiles/badge.svg?branch=master

aiofiles是一个apache2许可的库,用python编写,用于处理本地 异步应用程序中的磁盘文件。

普通的本地文件IO是阻塞的,不易移植 异步。这意味着执行文件IO可能会干扰异步应用程序, 它不应该阻塞正在执行的线程。艾奥菲尔帮了忙 引入支持将操作委派给 一个单独的线程池。

asyncwithaiofiles.open('filename',mode='r')asf:contents=awaitf.read()print(contents)'My file contents'

或者,使用旧语法:

f=yield fromaiofiles.open('filename',mode='r')try:contents=yield fromf.read()finally:yield fromf.close()print(contents)'My file contents'

功能

  • 一个与python标准非常相似的文件api,阻塞api
  • 支持缓冲和非缓冲二进制文件以及缓冲文本文件
  • 支持异步/等待(PEP 492)结构

安装

要安装所有配置文件,只需:

$ pip install aiofiles

用法

使用aiofiles.open()coroutine打开文件,除了 镜像内置的open接受可选的loopexecutor 论据。如果不存在loop,则将使用默认循环,如 设置异步策略。如果未指定executor,则默认事件循环 将使用执行器。

如果成功,异步文件对象将返回 与普通文件相同的api,除了以下方法是协程 并委托给执行人:

  • close
  • flush
  • isatty
  • read
  • readall
  • read1
  • readinto
  • readline
  • readlines
  • seek
  • seekable
  • tell
  • truncate
  • writable
  • write
  • writelines

如果失败,将引发一个常见的异常。

aiofiles.os模块包含 处理文件的几个有用的os函数:

  • stat
  • sendfile

与内置文件api的限制和区别

使用Python3.5或更高版本时,aiofiles文件对象可以用作 异步上下文管理器。也支持异步迭代。

asyncwithaiofiles.open('filename')asf:asyncforlineinf:...

使用Python3.3或3.4时,请注意关闭文件可能会阻塞, 从后台管理器退出时,从后台输出是不是 可能,因此aiofiles文件对象不能用作(普通、非异步) 上下文管理器。使用介绍中的try/finally构造 以确保关闭文件。

使用Python3.3或3.4时,也不支持迭代。迭代 文件,重复调用readline,直到返回空结果。坚持住 注意readline不删除换行符。

f=yield fromaiofiles.open('filename')try:whileTrue:line=yield fromf.readline()ifnotline:breakline=line.strip()...finally:yield fromf.close()

贡献

我们非常欢迎您的贡献。测试可以使用tox运行,请确保 在提交请求之前,覆盖范围至少保持不变。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java线程;创建一个单独的线程来定期执行某些操作   用java将SonarQube升级到5.2失败。util。同时发生的CancellationException:空   在线程对象上调用start时,线程上设置的java优先级无效   java如何在不使用reduce()或last()折叠的情况下获取通量的最后一项   java如何从ArrayList中获取元素?   应用了逻辑的JavaTwitterAPI   在这种情况下,怎样才能不让自己重复?安卓的java   JavaAndroid:线程可运行和处理程序。在run方法中发布问题(Handler.postXX在预期情况下不会按时运行)   java log4j grok与管道故障   使用循环返回命令选项时出现问题/仅运行一个命令(JAVA)   java双重比较问题   使用vertx的JWT公钥/私钥身份验证中的java握手   用Java将WMA和AAC音频转换为MP3   解析字符串java get index   与具有不同数据类型的密钥同名的java JSON