gpt4 book ai didi

python - 一个上下文管理器而不是两个用于打开文件?

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:49 25 4
gpt4 key购买 nike

我的问题看起来类似于 this one但不确定...我想解析一些有时不是用 gzip 压缩的日志文件。

我有以下内容:

if file[-3:] == ".gz":
with gzip.open(file, 'rb') as f:
# do something
else:
with open(file) as f:
# do the same thing.

有没有可能只有一个with语句?

最佳答案

fn = gzip.open if file.endswith('.gz') else open

with fn(file, 'rb') as f:
...

另请注意,调用返回上下文管理器的函数不必发生在 with 行内:

if file.endswith('.gz'):
ctx = gzip.open(file, 'rb')
else:
ctx = open(file)

with ctx as f:
...

关于python - 一个上下文管理器而不是两个用于打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com