我是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)
请帮忙。感谢
答案 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