对于循环在同一文件描述符上不工作两次

时间:2016-04-12 01:14:48

标签: python file

代码没有进入第二个for循环。我没有在任何地方修改文件描述符。为什么会这样?

 var originalString = 'aa/bbbb/ccccc/eeee/fffff.jpg';

 //convert to array
 var parts = originalString.split('/');

 //find the second to last item
 var lastPartOfPath = '';

 //make sure there are more than one part
 if (parts.length > 1) {
      lastPartOfPath = parts[parts.length-2];
 }

3 个答案:

答案 0 :(得分:3)

这是因为您的文件指针已到达文件末尾。因此,您需要在下一次迭代之前将其指回文件的开头。把它放在你的第二个循环之前:

fd.seek(0)

检查输入/输出here上的教程。关于seek的部分说明:

  

要更改文件对象的位置,请使用f.seek(offset,from_what)。

答案 1 :(得分:2)

for循环通过调用fd.next()直到它引发StopIteration为止。当您第二次迭代它时,文件已经完成。要回到开头,请使用fd.seek(0)

答案 2 :(得分:1)

因为for lines in fd:将放置读指针,文件指针或在文件末尾调用的任何内容。在fd.seek(0)循环

之间调用for