2017-05-31 75 views
1

我正在編寫代碼以處理文件夾'test_images'中的6個圖像。他們的名字已被儲存在TestImagesArray嘗試讀取文件夾中的第二個文件時Python返回錯誤

所以print(TestImagesArray)給我:

['solidYellowCurve.jpg', 'whiteCarLaneSwitch.jpg', 'solidWhiteCurve.jpg', 'solidYellowLeft.jpg', 'solidWhiteRight.jpg', 'solidYellowCurve2.jpg'] 

在for循環中,我嘗試從第一讀取到第6

共6張圖片

for i in range(0,2): 
    # Add the folder's name before image name 
    location = 'test_images/'+TestImagesArray[i]; 
    image = mpimg.imread(location) 
    gray = grayscale(image) 
    # Assumption: one kernal size for all images 
    ... 
    print(i) 

i = 0時,有用。但是當我= 1時,它返回錯誤。

Traceback (most recent call last): File "p1.py", line 121, in image = mpimg.imread(location) File "/home/cocadas/miniconda3/envs/carnd-term1/lib/python3.5/site-packages/matplotlib/image.py", line 1227, in imread im = pilread(fname) File "/home/cocadas/miniconda3/envs/carnd-term1/lib/python3.5/site-packages/matplotlib/image.py", line 1205, in pilread with Image.open(fname) as image: File "/home/cocadas/miniconda3/envs/carnd-term1/lib/python3.5/site-packages/PIL/Image.py", line 2410, in open fp = builtins.open(filename, "rb") FileNotFoundError: [Errno 2] No such file or directory: 'test_images/whiteCarLaneSwitch.jpg'

在運行'python p1.py'的同一個目錄中。通過驗證文件的位置

[email protected]:~/Workspace/carnd/CarND-LaneDection-HT$ ls -al test_images/whiteCarLaneSwitch.jpg 
-rw-rw-r-- 1 cocadas cocadas 60676 May 30 13:05 test_images/whiteCarLaneSwitch.jpg 

所以這告訴我該文件在那裏。這對我沒有意義。我錯過了什麼嗎?

+2

似乎很清楚:文件不存在。你確定你的名字是正確的嗎? –

+1

我相信Python可能也會搜索'test_images /'相對於您執行腳本的地方,而不是腳本的實際位置。如果您知道這些文件存在,請確認這種情況不會發生。 –

+0

在運行'python p1.py'的同一個目錄中。驗證文件的位置 cocadas @ cocadas-ThinkPad-W540:〜/ Workspace/carnd/CarND-LaneDection-HT $ ls -al test_images/whiteCarLaneSwitch.jpg -rw-rw-r-- 1 cocadas cocadas 60676 May 30 13:05 test_images/whiteCarLaneSwitch.jpg – Hong

回答

1

看看堆棧跟蹤的結尾:FileNotFoundError: [Errno 2] No such file or directory: 'test_images/whiteCarLaneSwitch.jpg'。這是Python告訴你它找不到該文件。確保該文件實際上位於文件系統中,並且三重檢查是否已正確拼寫文件名(無論是在代碼中還是在文件系統中)。

您可能(有意或無意)切換工作目錄,導致相對路徑失敗。

最簡單的修復方法可能就是使用完整路徑。在你的情況下(由你的ls輸出來判斷):

import os 
home = os.path.expanduser("~") 
workDir = os.path.join(home,'Workspace/carnd/CarND-LaneDection-HT/') 
for i in range(0,6): 
    location = = workDir+'test_images/'+TestImagesArray[i]; 
    image = mpimg.imread(imageLocation) 
+0

在運行'python p1.py'的同一個目錄中。驗證文件的位置 cocadas @ cocadas-ThinkPad-W540:〜/ Workspace/carnd/CarND-LaneDection-HT $ ls -al test_images/whiteCarLaneSwitch.jpg -rw-rw-r-- 1 cocadas cocadas 60676 5月30日13:05 test_images/whiteCarLaneSwitch.jpg – Hong

+1

您是否在計算過程中切換工作目錄?完整的路徑可能更安全。 – mwm314

+0

我確認imwrite()更改工作目錄。謝謝!如何在imread()中使用絕對目錄,你知道任何機會嗎? – Hong

相關問題