为什么“with open()”更适合在 Python 中打开文件?

2024-01-04

通常,当有人发布他们的代码时,人们会在旁边添加“你应该使用with open('filename') as f现在的语法。”我同意大多数老式的f = open()陈述没有附带.close(),我什至回答过一些问题,其中对“隐式关闭”的依赖是他们编程问题的全部原因。

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

我的问题是:除了不必显式关闭文件之外,还有其他原因需要使用with处理文件的语法,特别是输出文件? (“更多Pythonic”本身并不是一个原因。)如果这是重复的,我很高兴指出这一点,但我自己找不到它。


没有其他优点了with:确保清理是它的唯一用途。

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

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

所以,你所描述的缺点with无论您如何编写,这确实是正确代码的缺点(在需要清理的情况下)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“with open()”更适合在 Python 中打开文件? 的相关文章

随机推荐