这将在源aiofiles38支持新版本的Python之后被删除

aiofiles38的Python项目详细描述


https://img.shields.io/pypi/v/aiofiles.svghttps://travis-ci.org/Tinche/aiofiles.svg?branch=masterhttps://codecov.io/gh/Tinche/aiofiles/branch/master/graph/badge.svgSupported Python versions

aiofiles是一个Apache2授权库,用Python编写,用于处理本地 异步应用程序中的磁盘文件。在

普通的本地文件IO是阻塞的,不能轻松移植 异步。这意味着执行文件IO可能会干扰异步应用程序, 它不应该阻塞正在执行的线程。aiofiles通过 引入支持将操作委派给的文件的异步版本 独立的线程池。在

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

也支持异步迭代。在

^{pr2}$

特点

  • 一个非常类似于Python标准的阻塞API的文件API
  • 支持缓冲和非缓冲二进制文件,以及缓冲文本文件
  • 支持async/awaitPEP 492)构造

安装

要安装aiofiles,只需:

$ 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
  • rename
  • remove
  • mkdir
  • rmdir

编写aiofiles

真正的文件IO可以通过修补^{tt33}来模拟$ 如你所愿。返回类型还需要注册到 aiofiles.threadpool.wrapdispatcher:

aiofiles.threadpool.wrap.register(mock.MagicMock)(lambda*args,**kwargs:threadpool.AsyncBufferedIOBase(*args,**kwargs))asyncdeftest_stuff():data='data'mock_file=mock.MagicMock()withmock.patch('aiofiles.threadpool.sync_open',return_value=mock_file)asmock_open:asyncwithaiofiles.open('filename','w')asf:awaitf.write(data)mock_file.write.assert_called_once_with(data)

历史

0.4.0(2018-08-11)

  • Python3.7支持。在
  • 删除了Python3.3/3.4支持。如果使用这些版本,请坚持使用aiofiles 0.3.x

0.3.2(2017-09-23)

  • 许可证现在包含在sdist中。 #31

0.3.1(2017-03-10)

  • 引入了变更日志。在
  • ^如果标准的os模块包含sendfile函数,{tt35}$现在可以工作。在

贡献

捐款是非常欢迎的。测试可以用tox运行,请确保 在提交请求前,保险范围至少保持不变。在

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

推荐PyPI第三方库


热门话题
java如何从IBM MQ的JMSException检测可恢复错误   java Lucene6。4.2:找不到类,尝试添加查询。   Java Pdf差异库   在Java中多线程处理我的线程   java将字符串传递给Uri。下载中的parse()   java在列表中查找原语位置   java JPA条件从另一个查询中选择   java中的强制转换和转换   java如何在没有上下文的情况下获取SOAP Web服务(Apache Axis 1.4)的调用客户端的IP地址   java Android IllegalBlockSizeException:解密中最后一个块未完成   java Jersey是否要自定义无效资源路径的错误处理?   如何将JavaCVS web项目转换为基于maven的web项目?   java如何检查通用列表是否与jUnit相等?   arraylist java。util。尝试使用迭代器时发生ConcurrentModificationException错误   使用springsecurity,jsp上的java${u csrf.token}始终为空   sql使用java从临时表中选择数据   spring验证中的java@Notnull和@Pattern无效   java如何使用jQuery将包含对象数组的对象数组传递给Spring MVC控制器?