我希望我把问题框在正确的位置。我试图强迫自己成为更好的程序员。更好的意思是有效的。我想编写一个程序来识别目录中的文件并读取每个文件以供进一步处理。经过一番改组后,我得到了这样的结果:如何知道何时在Python中管理资源
for file in os.listdir(dir):
y=open(dir+'\\'+file,'r').readlines()
for line in y:
pass
y.close()
因为y是一个列表,所以我得到一个AttributeError并不奇怪。当我编写代码片段时,我没有想到这一点。
我在想这件事,恐怕我有五个打开的文件(也有由DIR指定的目录中五个文件。
所以它运行我可以修复的代码,我打开后直接关闭该文件。他们我很好奇,如果我需要,或者Python的处理关闭文件在循环的下一次迭代如果是这样的话,我只需要编写:
for file in os.listdir(dir):
y=open(dir+'\\'+file,'r').readlines()
for line in y:
pass
我猜测它(蟒蛇)不处理这是毫不费力的,我认为这可以被处理的原因是我已经改变了y所引用的对象/东西,当我开始第二次迭代时这里没有更多的内存引用了使用readlines方法打开和读取的文件。
我必须失去了一些东西,但它是一个惊喜,我认为你会得到一个AttributeError如果y是一个列表。 – 2009-04-15 23:47:37
我相信OP指的是'y.close()'这一行。 – 2009-04-15 23:50:48
你不能关闭一个列表y是一个readlines()方法的列表 - 我希望method是readline的正确名称。 – PyNEwbie 2009-04-15 23:51:19