我有以下代码,其中我使用ExitStack代替了with语句。
from contextlib import contextmanager
from contextlib import ExitStack
from tempfile import NamedTemporaryFile
@contextmanager
def myfile():
temp_file = NamedTemporaryFile(suffix='.txt')
temp_file.seek(0)
yield temp_file
os.unlink(temp_file.name)
with ExitStack() as stack:
files = []
for idx in range(5):
files.append(stack.enter_context(myfile()))
# do something with the files
上面的代码会产生以下 5 条错误信息。
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpbupwinzt.txt'
我对 ExitStack 的使用方式有疑问,应该如何正确地完成上述操作?
注意:我不能改变 myfile() 函数,但可以改变其余代码。
with
语句,它是否有效? - Dani Mesejowith
语句时遇到了错误,即使使用多个with
语句也是如此。with myfile() as f1: with myfile() as f2: # do something here
- asdfkjasdfjk