StopIteration在运行文件中显示,但不在命令提示符中显示

时间:2017-07-23 08:26:12

标签: python

我是Python新手 我在命令提示符下编写此代码,它工作正常。但是当我在.py文件中写入并运行它时,它会显示StopIteration错误。

import os
x = next(os.walk('E:/pycode/images'))[1]
for y in x:
    z = next(os.walk(y))[2]
    print(z)

请帮忙。感谢

2 个答案:

答案 0 :(得分:1)

无需多次调用os.walk,它已经递归运行。如果要打印完全存在一个文件夹的文件名,请使用:

import os

w = os.walk('E:/pycode/images')
next(w) # ignore files in top level folder
for path, dirs, files in w:
    dirs.clear() # don't go any deeper along this path
    for f in files:
        print(f) # optional: print(os.path.join(path, f))

您现有的代码可能引发异常,因为您调用os.walk的其中一个文件夹为空。如果在空迭代器上调用next,则会引发StopIteration。我不知道为什么只在某些时候发生这种情况(除非在运行之间文件夹的内容发生了变化)。

答案 1 :(得分:0)

您可以使用下面给出的try-catch来避免停止错误

import os

x = next(os.walk('E:/pycode/images'))[1]
for y in x:
  try:
    z = next(os.walk(y))[2]
    print(z)
  except:
    break