我试图创建一个for循环并打开一堆文件描述,但不幸的是,它在for循环中对我不起作用。你知道吗
>>> import os
>>> os.getpid()
6992
>>> open('/tmp/aaa', 'w')
<open file '/tmp/aaa', mode 'w' at 0x7fa7c9645ae0>
>>> for i in xrange(10):
... open('/tmp/aaa{0}'.format(str(i)), 'w')
...
上面的脚本只打开1个fd:
vagrant@workspace:~$ ls -alht /proc/6992/fd/ | grep tmp
l-wx------ 1 vagrant vagrant 64 Nov 29 15:18 11 -> /tmp/aaa
问题:
1-如何使用for循环打开多个文件描述符?你知道吗
2-以上代码有什么问题?你知道吗
您需要获取文件描述符,然后在对其执行任何操作之后,关闭它以刷新它。你知道吗
所以你需要更像这样的东西:
如果您需要保存这些文件描述符以便稍后在代码中访问它们,您应该将它们保存在某个位置,例如列表。你知道吗
open
返回对其进行操作的文件对象。你知道吗如果丢弃返回值,Python将对其进行垃圾收集,从而关闭文件。因此,在循环中调用
open
而不使用返回值是没有用的,因为所有返回的文件对象都将被垃圾收集。你知道吗您需要的是保存这些文件对象:
一些提示:
format
时不需要{{0}
中也不需要零,因为Python插入format
si
第个参数(计数从格式字符串之后开始),而不是格式字符串中的第i
对大括号。你知道吗总之,代码可以简化为:
相关问题 更多 >
编程相关推荐