为了账号安全,请及时绑定邮箱和手机立即绑定

在没有Web服务器的情况下从本地主机获取文件

在没有Web服务器的情况下从本地主机获取文件

SMILET 2023-07-11 16:22:06
我想在没有 Web 服务器的情况下从本地主机异步获取文件。似乎可以使用 file:// 方案。以下代码示例取自文档,但显然它不起作用:import aiohttpimport asyncioasync def fetch(session, url):    async with session.get(url) as response:        return await response.text()async def main():    async with aiohttp.ClientSession() as session:        html = await fetch(session, 'file://localhost/Users/user/test.txt')        print(html)if __name__ == '__main__':    loop = asyncio.get_event_loop()    loop.run_until_complete(main())如何让它工作?我看到的一种方法是使用 run_in_executor 在单独的线程池中使用“curl file://path”,但我认为应该有一种方法可以修复代码
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

如果需要获取本地文件的内容,可以使用普通的 Python 内置来完成,例如:


with open('Users/user/test.txt') as rd:

    html = rd.read()

如果文件不是很大,并且存储在本地文件系统上,您甚至不需要使其异步,因为读取它的速度足够快,不会干扰事件循环。如果文件很大或由于其他原因读取速度可能很慢,则应通读它以防止它阻止其他 asyncio 代码。例如(未经测试):run_in_executor


def read_file_sync(file_name):

    with open('Users/user/test.txt') as rd:

        return rd.read()


async def read_file(file_name):

    loop = asyncio.get_event_loop()

    html = await loop.run_in_executor(None, read_file_sync, file_name)

    return html


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信