来自文件的Python ElementTree.parse()不会关闭该文件

Ser*_*lov 4 python python-2.7

我有一个xml文件 - 一种模板,用于填充参数并发出请求(创建一些数据).

我打开这个文件

tree = ET.parse(path_to_file)
Run Code Online (Sandbox Code Playgroud)

然后我循环从文件中获取xml,填充参数并发送请求.但在2555次请求后,我收到一条错误消息:

IOError: [Errno 24] Too many open files: 'resources/cmr/skeletons/man/CreateLiveEvent.xml'
Run Code Online (Sandbox Code Playgroud)

有没有办法在ET.parse()打开它之后关闭文件?

谢谢

Mar*_*ers 9

升级2.7安装.这应该在问题#7334中得到修复,并包含在2.7.3中.它确实看起来像有在程中的错误cElementTree但执行关闭的文件(例如,它不关闭它们).

另一种方法是自己打开文件:

with open(path_to_file, 'rb') as xml_file:
    tree = ET.parse(xml_file)
Run Code Online (Sandbox Code Playgroud)

并将其留给with语句来关闭文件对象.将文件打开为二进制文件 ; XML解析器的工作是处理行结尾和编码.