[英]How to solve stopiteration error? i got Traceback (most recent call last) error
這是我寫的代碼:
img_files = next(os.walk('MyDrive/FYP/Fig_Dataset'))[2]
msk_files = next(os.walk('MyDrive/FYP/Ground_Truth'))[2]
img_files.sort(2)
msk_files.sort(2)
print(len(img_files))
print(len(msk_files))
X = [2]
Y = [2]
for img_fl in tqdm(img_files):
if(img_fl.split('.')[-1]=='jpg'):
img = cv2.imread('MyDrive//FYP/Fig_Dataset/{}'.format(img_fl))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
resized_img = cv2.resize(img,(256, 192), interpolation = cv2.INTER_CUBIC)
X.append(resized_img)
msk = cv2.imread('MyDrive//FYP/Ground_Truth/{}'.format(img_fl.split('.')[0]+'_segmentation.png'),cv2.IMREAD_GRAYSCALE)
resized_msk = cv2.resize(msk,(256, 192), interpolation = cv2.INTER_CUBIC)
Y.append(resized_msk)
這是我得到的錯誤
StopIteration Traceback (most recent call last)
<ipython-input-19-40a26ba7758c> in <module>()
----> 1 img_files = next(os.walk('FYP/Fig_Dataset'))[2]
我不知道如何解決這個問題。 幫我
os.walk
返回一個生成器,它是一種迭代器。 迭代器從序列中發出值,然后在完成時引發StopIteration
。 next
嘗試從迭代器中獲取下一個值。 遵循剛才提到的規則,迭代器將返回下一個值或引發StopIteration
。
由於您在第一次next
調用時看到了StopIteration
,這意味着os.walk
根本沒有找到路徑。 沒有要迭代的內容,因此立即引發了StopIteration
。 您可以捕獲此異常作為了解目錄本身無效的一種方式。
try:
fig_path = 'MyDrive/FYP/Fig_Dataset'
img_files = next(os.walk('MyDrive/FYP/Fig_Dataset'))[2]
msk_files = next(os.walk('MyDrive/FYP/Ground_Truth'))[2]
except StopIteration:
print("Directory not found")
exit(2)
剩下的問題是為什么這些路徑不正確。 您可以執行print(os.getcwd())
來查看當前路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.