簡體   English   中英

如何解決停止迭代錯誤? 我收到 Traceback(最近一次通話最后一次)錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM