问题标签 [python-aiofiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
212 浏览

python - Python aiohttp 模块:不明确的 .content 属性

这是一个小代码片段:

我正在尝试使用库下载一些二进制文件aiohttp,然后使用库将它们传递给协程aiofiles以将文件写入磁盘。我已经阅读了文档,但仍然无法确定我是否可以通过content = await response.content,或者当手柄关闭时它async with..是否关闭?因为在二级博客上,我发现:

根据 aiohttp 的文档,因为响应对象是在上下文管理器中创建的,所以它在技术上隐式调用 release()。

这让我感到困惑,我应该将第二个函数的逻辑嵌入到response句柄中还是我的逻辑正确?

0 投票
2 回答
7258 浏览

python - ASGI“寿命”协议似乎不受支持

我在 fastapi 和 aiofiles 上运行了一个异步代码,我试图从 .json 文件加载和保存我的信息,但每次我关闭程序时,它只保存 dict 的键并向我显示“ASGI 'lifespan'协议似乎不受支持”按摩

这是我的开启/关闭部分:

任何想法问题出在哪里?

0 投票
1 回答
994 浏览

python - 如何使用 get 请求的响应通过 aiohttp 上传文件?

首先,我正在为 WordPress REST API 编写一个异步包装器。我有一个托管在 Bluehost 上的 Wordpress 网站。我正在使用端点进行媒体(图像)上传。我已经成功上传了一张图片,但我想做两处更改。第二个更改是我真正想要的,但出于好奇,我也想知道如何实现更改 1。我将首先提供代码,然后提供一些细节。

工作代码

变化 1

第一个更改是使用 aiofiles.open() 上传,而不是只使用 open(),因为我希望处理大量文件。以下代码不起作用。

变化 2

我的另一个变化是我想要另一个功能,可以直接将文件上传到 WordPress 服务器,而无需在本地下载它们。因此,我不想获取本地图片,而是想在线传递图片的 url。以下代码也不起作用。

详细信息/调试

我试图弄清楚为什么每个都行不通。我认为关键是调用print(image_content)print(f)显示我输入的确切内容mpwriter.append

在我只使用标准 Pythonopen()函数的示例中,我显然是在传递<_io.BufferedReader name='/redactedfilepath/index.jpeg'>

在使用 aiofile 的更改 1 示例中,我传入<aiofiles.threadpool.binary.AsyncBufferedReader object at 0x7fb803122250> Wordpress 将返回此 html:

b'<head><title>Not Acceptable!</title></head><body><h1>Not Acceptable!</h1><p>An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.</p></body></html>'

最后,在更改 2 中,我尝试将 get 请求传递给 url 给我的内容 <StreamReader 292 bytes>。WordPress 返回的响应与上面的 Mod Security 相同。

知道如何使这些示例起作用吗?似乎它们都是某种类型的 io 阅读器,但我猜底层 aiohttp 代码对它们的处理方式不同。

这也无关紧要,但这我传递给更改 2 示例的 url。

0 投票
1 回答
669 浏览

python - aiofiles - 根据特定条件异步删除文件夹中的文件

我有大约 50 000 个 HTML 文件的文件夹。我正在尝试编写打开文件的脚本,如果标题包含某个字符串,则应该删除文件。

这是我迄今为止的尝试:

但我得到:

不知道使用 aiofiles 打开后要使用哪些函数来关闭和删除?

编辑 - 基于@joao 答案的工作代码

0 投票
1 回答
10 浏览

python-3.x - next line thingy doesn't work when used proper syntax

path is a string but Monthly is date. I can Insert all in a text file but I am not getting the desired output:

The output that I wish should be

But the output that I get is

The extra line after the path is causing problems.

0 投票
1 回答
233 浏览

python - 异步文件复制 - 为什么文件描述符不好?

想实现 Python 代码来读取和写入(即复制)文件。目标是同时读取和写入,因此它减少了执行文件复制的时间。这是一个让我熟悉 async/await 范式的学习练习。

这是我当前的实现,但代码错误。第二次或第三次文件读取操作抛出“Bad File Descriptor”。输入文件确实存在,我可以使用 <file_object>.read() 正常读取它

想知道这里出了什么问题吗?使用异步文件是否有一些意想不到的副作用?


这是完整的堆栈跟踪:

0 投票
0 回答
216 浏览

python - Python使用aiofiles并行读取目录中的文件

所以,基本上我正在考虑将本地目录中的一些文件上传到云存储。本地目录将包含多个文件,这些文件可能非常大,因此我试图找到一种并行上传它的方法,每个文件都以块的形式读取,以免阻塞内存。

现在,我可以使用它连续完成它并且它可以工作

file_chunks 定义为

现在,当我计划并行上传多个文件时,我希望是否可以使用aiofilesasyncio执行此操作。所以,我尝试将上面的内容重写为下面的内容

file_chunks 的定义更改为

我现在有 2 个文件要上传,我希望看到打印语句,打印类似

但是,我看到它正在连续运行

只有当 File1 结束时,File 2 才会开始。

我浏览了一些 Stack Overflow 帖子,他们提到使用multiprocessing. 这是唯一可能的方法吗?

就我而言,没有任何“处理”(主要计算),只是试图上传文件。asyncio 和 aiofiles 是否无法处理它,例如在读取一个文件时,程序不会等待(异步)并开始读取下一个文件?或者我只是在我的代码中做错了什么?

任何问题,我可以详细说明。

0 投票
1 回答
603 浏览

python - AIOFiles 比正常文件操作花费更长的时间

我有一个问题,我是 python 异步世界的新手,我编写了一些代码来测试它的功能asyncio,我创建了 10 个包含随机内容的文件,命名为file1.txt, file2.txt, ..., file10.txt

这是我的代码:

并得到了这个结果:

为什么异步代码比同步代码花费更长的时间?我哪里做错了?

0 投票
1 回答
66 浏览

python-asyncio - Aiofiles 导入在 buildozer、apk 构建中不起作用但崩溃

有没有人成功地将 aiofiles 合并到 buildozer apk 中。该软件包正在构建,但在手机或模拟器上安装 apk 后会崩溃。我已经测试了所有其他进口产品,它们工作正常。Buildozer 规格如下

[应用程序]

标题 = 我的应用程序

package.name = myapp

package.domain = org.test

源.dir = .

source.include_exts = py,png,jpg,kv,atlas,json,mp3,gif,txt,md,gitignore,ttf,zip,cfg,TTF

#source.include_patterns = assets/ ,images/ .png

#source.exclude_exts = 规范

#source.exclude_dirs = 测试,bin

#source.exclude_patterns = license,images/ / .jpg

版本 = 0.1

要求 = python3,kivy,google,pyjnius,kivymd,certifi,kivyauth,openssl,ws4py,jnius,android,google-auth,凭证,oauth2,urllib3,oauth2client,firebase,pygame,jwcrypto,pycryptodome,sseclient,requests_toolbelt,python_jwt, gcloud,rsa,密码学,httplib2,pyrebase,sdl2,sdl2_image,sdl2_mixer,sdl2_ttf, firebase-auth,cachetools,google-cloud,firebase-client,google-cloud-storage,jwt,PIL,chardet,nodejs,ast,aiofiles,线程,日期时间,操作系统,sys,re,cython,pip,setuptools,线程,concurrent.futures,asyncio,plyer

方向=纵向

osx.python_version = 3

osx.kivy_version = 1.9.1

全屏 = 0

#android.permissions = 互联网

#android.api = 30

#android.minapi = 21

#android.sdk = 20

#android.ndk_api = 21

#android.private_storage = 真

#android.ndk_path =

#android.sdk_path =

#android.logcat_filters = *:S python:D

#android.copy_libs = 1

android.arch = armeabi-v7a

p4a.branch = 主

#ios.kivy_ios_url = https://github.com/kivy/kivy-ios

ios.ios_deploy_url = https://github.com/phonegap/ios-deploy ios.ios_deploy_branch = 1.7.0

#[构建器]

0 投票
1 回答
116 浏览

python - 使用 Aiofiles 读取文件时的 Python 错误

简单的问题陈述。我想异步读取文件。我的问题是当我尝试使用 aiofiles.open 读取文件时,它只是出现了神秘的消息错误

问题的症结可以用下面的例子来证明

该文件已创建,但我无法使用 aiofiles 读取相同的文件。

我试过指定编码等,但没有任何帮助。

这个错误是什么意思?