在tarfile的官方python文档中,我看不到使用
创建的tarfiletarfile.open('example.tar', 'r:*')
一旦你不再需要它就应该关闭。
在其他一些示例中(例如here),您经常会看到tar文件无法关闭。
如果我在某些功能中更频繁地打开相同的tar文件而不总是关闭它,我会遇到问题吗?
def example(name):
f = tarfile.open(name, 'r:*')
# do some other stuff
# not closing the tarfile object
return result
example('example.tar')
example('example.tar')
在'r'而不是'w'模式下打开tarfile是否有区别(明显的读/写除外)?
在示例中,如果使用写入模式'w'打开tarfile,它们总是关闭tar文件?
答案 0 :(得分:9)
是的,可以并且应该关闭TarFile
object(tarfile.open()
返回的内容)。
您可以在with
语句中将对象用作上下文管理器,以使其自动关闭:
with tarfile.open(name, 'r:*') as f:
# do whatever
return result
TarFile
对象应该被视为Python中的任何其他文件对象;当可以依赖于文件对象在清除所有对它的引用时自动关闭,但是明确地关闭它会好得多。当文件打开以供写入时,这会同样适用。
答案 1 :(得分:4)
如果以模式打开关闭它的原因=' w'如果不这样做,对文件的实际写入可能会保持缓冲状态,并且对文件的后续用户不可见。因此,如果您希望编写一个文件并稍后在同一程序中读取它,则必须在两者之间关闭它。 Python中的常规文件对象也是如此。
您应该始终关闭文件对象。当它们可写时,这只是非常重要。