gpt4 book ai didi

python - 为什么 `with open()` 更适合在 Python 中打开文件?

转载 作者:太空狗 更新时间:2023-10-29 21:26:46 25 4
gpt4 key购买 nike

经常当有人发布他们的代码时,人们会在旁边加上一句“你现在应该使用 with open('filename') as f 语法。”我同意大多数老式的 f = open() 语句没有伴随的 .close(),我什至回答了这种依赖于“隐式关闭”是他们编程问题的全部原因。

但是,在某些情况下,将代码嵌套在 with block 中似乎会给编写代码带来其他不便。例如,有时我喜欢在开头使用标志来表示 writefile = True。这让我只能打开和关闭要使用的文件,同时保持相同的处理线程。在代码的不同位置,我可以打印到屏幕或写入文件。 (我意识到我会打开 stdout 或开头的文件并改用该方法。)

我的问题是:除了不必显式关闭文件外,还有其他原因可以使用with 语法来处理文件,尤其是输出文件吗? (“更多 pythonic”本身并不是理由。)如果这是重复的,我很乐意指出这一点,但我自己找不到。

最佳答案

with 没有其他优势:确保清理是它的唯一目的。

无论如何,您都需要一个作用域 block ,以便在发生异常时关闭文件:

writefile = random.choice([True, False])
f = open(filename) if writefile else None
try:
# some code or other
finally:
if writefile:
f.close()

因此,无论您如何编写,您描述为 with 的缺点实际上是正确代码的缺点(在需要清理的情况下)。

关于python - 为什么 `with open()` 更适合在 Python 中打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711344/

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