这将在源aiofiles38支持新版本的Python之后被删除
aiofiles38的Python项目详细描述
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/await(PEP 492)构造
安装
要安装aiofiles,只需:
$ pip install aiofiles
使用
使用aiofiles.open()coroutine打开文件,除了 镜像内置的open接受可选的loop和executor 论据。如果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运行,请确保 在提交请求前,保险范围至少保持不变。在
- 项目
标签: