异步文件
async-files的Python项目详细描述
异步文件
async files是一个快速、轻量级、可扩展的asyncio文件库,它是用纯python编写的,受aiofiles的启发。就像一个单独的线程池一样委托一个独立的线程操作。不过,异步文件已经完全从头开始重新编写,以使用现代的async...await...
语法,并考虑到可扩展性和灵活性。在
使用
可以使用异步上下文管理器或通过调用FileIO实例来打开文件。在
asyncwithFileIO("README.md")asf:s=awaitf.read()print(s)
或者
^{pr2}$也支持异步迭代。在
asyncwithFileIO("README.md")asf:asyncforlineinf:print(line,end="")
您还可以扩展FileIO的功能,以便非常容易地支持tempfile.TemporaryFile
等其他类:
fromtempfileimportTemporaryFileas_TemporaryFilefromasync_filesimportFileIOclassTemporaryFile(FileIO):OPEN=_TemporaryFile
您可以对任何其他IO类(如gzip.GzipFile
、zipfile.ZipFile
)等执行相同的操作。
我在^{
您还可以通过使用async files的实用函数async_wraps
从任何阻塞函数创建协程。例如:
importshutilfromasync_files.utilsimportasync_wrapsasync_rmtree=async_wraps(shutil.rmtree)
您还可以使用async_wraps
作为自定义函数的装饰器。在
Note: Only use
async_wraps
if target function is IO-bound.
以下是FileIO对象的异步属性。在
close:Callable[[],Awaitable[None]]flush:Callable[[],Awaitable[None]]isatty:Callable[[],Awaitable[bool]]read:Callable[[],Awaitable[Union[str,bytes]]]read1:Callable[[],Awaitable[bytes]]readinto:Callable[[bytearray],Awaitable[int]]readinto1:Callable[[bytearray],Awaitable[int]]readline:Callable[[],Awaitable[Union[str,bytes]]]readlines:Callable[[],Awaitable[List[Union[str,bytes]]]]seek:Callable[[],Awaitable[int]]tell:Callable[[],Awaitable[int]]truncate:Callable[[],Awaitable[int]]write:Callable[[Union[str,bytes]],Awaitable[int]]writelines:Callable[[List[Union[str,bytes]]],Awaitable[None]]
其他属性与标准库fileobj一样是同步的。在
反馈和贡献
bug和特性请求可以通过GitHub issues进行。 请注意,这些问题不是私有的,所以在提供输出时要小心,以确保您没有披露其他产品中的安全问题。在
通过git也欢迎Pull请求。在
异步文件使用sourcery
、restyled
和code factor
机器人程序来确保PR的代码质量
- 项目
标签: