Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何知道关闭资源操作需要遵循哪个函数_Python - Fatal编程技术网

Python 如何知道关闭资源操作需要遵循哪个函数

Python 如何知道关闭资源操作需要遵循哪个函数,python,Python,我是Python新手,对何时应该调用close感到困惑 例如,考虑这个问题。 此任务结束时没有reader.close() Q> 如何确定函数调用之后是否需要执行关闭调用?返回需要清理的资源的函数将有文档说明这一点csv.reader不会打开文件,也不会创建可关闭的资源。open调用可以,但是with语句负责为您关闭它。您需要调用close的唯一时间是您必须释放系统资源的时候。大体上,这仅适用于文件句柄。一般对象,如csv读取器,不必关闭。您给出的示例不需要关闭,因为打开的文件是由和处理的(类似

我是Python新手,对何时应该调用close感到困惑

例如,考虑这个问题。

此任务结束时没有reader.close()


Q> 如何确定函数调用之后是否需要执行关闭调用?

返回需要清理的资源的函数将有文档说明这一点
csv.reader
不会打开文件,也不会创建可关闭的资源。
open
调用可以,但是
with
语句负责为您关闭它。

您需要调用close的唯一时间是您必须释放系统资源的时候。大体上,这仅适用于文件句柄。一般对象,如csv读取器,不必关闭。

您给出的示例不需要关闭,因为打开的文件是由
处理的(类似于使用C的

现在,如果您的示例是这样的,那么将出现一个
close()

这两者实际上是一样的,但是带有
会在运行期间处理故障,以确保文件句柄(
f
)关闭。如果此处的
打开
关闭
之间出现问题,则您仍然有一个打开的文件资源

编辑: 带有
与此相同:

import csv
f = open('some.csv', 'rb')
try:
    reader = csv.reader(f)
    for row in reader:
        print row
finally:
    f.close()
import csv
f = open('some.csv', 'rb')
reader = csv.reader(f)
for row in reader:
    print row
f.close()
import csv
f = open('some.csv', 'rb')
try:
    reader = csv.reader(f)
    for row in reader:
        print row
finally:
    f.close()