在哪里对数据执行进一步操作更好——在上下文管理器中还是外部?蟒蛇

问题描述 投票:0回答:1

我很好奇。

当我们使用上下文管理器打开文件时,是在上下文管理器内部还是外部执行进一步操作更好?

 with open("test.txt") as f:  
     data = f.read()
     # 1. do sth with data here 
 # 2. or do sth with data here

我知道我可以访问此处和此处的数据变量,但我不知道哪个是更好的做法?是否应该尽早关闭文件以免扩展其在内存中的访问权限?

python variables contextmanager
1个回答
0
投票

如果您在处理任何数据之前确实需要所有数据,那么请在

with
块之外进行操作;保持文件打开时间超过必要的时间没有任何好处,并且您可以通过在
with
之外完成其余工作来更快地释放程序资源。

也就是说,在很多情况下,像这样的批量获取数据不是有效的解决方案;如果可以按行或按块处理文件,则在

with
块内执行此操作,因此您的程序不会在所有输入都可以放入内存的假设下运行,例如按线路:

with open("test.txt") as f:  
     for line in f:
         # Do things with a single line

或按块:

BLOCK_SIZE = 4096
with open("test.txt") as f:  
     while block := f.read(BLOCK_SIZE):
         # Do things with a block of BLOCK_SIZE characters
© www.soinside.com 2019 - 2024. All rights reserved.