异步文件

async-files的Python项目详细描述


异步文件

Test RunnercodecovCodeFactor

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.GzipFilezipfile.ZipFile)等执行相同的操作。 我在^{中添加了tempfile和gzip模块的异步版本 因为它们是常用的模块,我将在以后的版本中添加更多的模块。 您可以像使用标准库模块一样使用这些模块,唯一的区别是您需要等待协同程序方法。 您可以通过creating new issue请求对新模块的支持。在

您还可以通过使用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请求。在

异步文件使用sourceryrestyledcode factor机器人程序来确保PR的代码质量

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

推荐PyPI第三方库


热门话题
java如何避免springbootstarterparent和dependency中的flyway包冲突   java文本文件写入不起作用   java获取名为DAO类的Bean创建异常   java类路径和清单文件   如何使用Java中的模式来获取像C中的“sscanf”这样的组?   java Spring自动连接具有构造函数的类   clientSecurity运行的java geode示例失败   java JavaFX:在FXML中从ResourceBundle访问非string对象   java登录到google firebase   java对象在通过构造函数后不会更改。为什么?   java(Android)对特定页面的操作webView   javascript如何在webview的js中从java调用变量   持久化—一种在Java中存储和检索对象而不使用关系数据库的简单方法?   java Ldap获取通讯组列表中的用户   java检查温度条件   java后退按钮警报框(Android Studio)   数组java列表问题:为什么我运行它时,它会在第三次打印时打印出4?   java相对路径与绝对路径