代码没有进入第二个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];
}
答案 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