我知道用它更好
with open(...)... 但我想知道是否有这样的案例
open(...)在任何情况下都有优势。
发布于 2022-01-10 09:34:44
是。with open(...)为您管理文件描述符,因此一旦完成with块,python将自动为您关闭文件描述符。但是,在某些情况下,保留文件描述符可能更有性能/更必要。一个简单的例子是一个函数,它打开一个文件并写入一个头行并将文件描述符传回:
def open_and_write_header(filename):
f = open(filename, 'w')
f.write('This is my header')
return f
file_desc = open_and_write_header('testfile.txt')
file_desc.write('This is my tail')
file_desc.close()然而,如果我们使用with语法:
def open_and_write_header(filename):
with open(filename, 'w') as f:
f.write('This is my header')
return f
file_desc = open_and_write_header('testfile.txt')
file_desc.write('This is my tail')
file_desc.close()我们得到:
Traceback (most recent call last):
File "stack.py", line 7, in <module>
file_desc.write('This is my tail')
ValueError: I/O operation on closed file.发布于 2022-01-10 09:34:59
file = open(...)要求您再次使用file.close()关闭该文件。打开(.)为你做这些。否则就没什么区别了。
发布于 2022-01-10 09:53:07
在with打开的代码块中,文件是打开的,可以自由读取。但是,当Python退出with块时,文件将自动关闭。
因此,如果您可能对程序中的同一个文件做了很多事情(例如,如果您有一些具有计算功能的用户界面程序),您可能希望保持文件打开,而不是一次又一次地关闭和重新打开它。
https://stackoverflow.com/questions/70650185
复制相似问题