所以我想用三重奏(异步)打开文件,然后由于文件很大,请阅读其中的一行
因此,在“普通”同步python中,我会执行以下操作:
with open("text.txt") as f:
for i, line in enumerate(f):
if i == 3:
print(line)
这将打印文件第二行的内容
现在的问题是,当使用trio的open_file方法时,
enumerate(f)
返回错误:TypeError: 'AsyncIOWrapper' object is not iterable
并遵循以下文档:
async with await trio.open_file("text.txt") as f:
async for i, line in f:
print(i)
print(line)
只会返回i的行值,而行的空白
因此,如何通过三重奏/异步来读取大文件的特定行而又不损失太多内存?
最佳答案
像这样构建一个异步枚举函数:
async def aenumerate(ait, start=0):
i = start
async for item in ait:
yield i, item
i += 1
那么您可以轻松地执行以下操作:
async with await trio.open_file("text.txt") as f:
async for i, line in aenumerate(f):
print(i)
print(line)
关于python - 如何使用Trio异步读取文件的特定行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57452548/