Ошибка подушки Python: нет такого файла или каталога - PullRequest
0 голосов
/ 15 марта 2019

У меня есть функция «Подушка» для отображения изображений в кадре данных Pandas на компьютере с Windows. При тестировании набора данных все работает нормально.

Функция таблеток:

from PIL import Image

def get_thumbnail(path):
    i = Image.open(path)
    print(path)
    i.show()
    return i

Чем я использую эту функцию, чтобы создать новый столбец Pandas, который должен содержать информацию об изображении PIL. Изображение генерируется на основе URL изображения, которое хранится в другом столбце Pandas:

adInfoListPD['Ad_thumb']

, который выглядит так:

> 0   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\03_ps4-pro-500-million-limited-edition-blau-transparent-bundle-29598325900_ps4-pro-500-million-limited-edition-blau-transparent-bundle-295983259__thumb_100x75.jpg
> 1   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\04_playstation-4-20th-anniversary-edition-ungeoeffnet-29586533000_playstation-4-20th-anniversary-edition-ungeoeffnet-295865330__thumb_100x75.jpg
> 2   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\05_playstation-4-20th-anniversary-sammleredition-ovp-29496806400_playstation-4-20th-anniversary-sammleredition-ovp-294968064__thumb_100x75.jpg
> 3   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\07_gratis-versand-alles-zusammen-xxxl-paket-29517022700_gratis-versand-alles-zusammen-xxxl-paket-295170227__thumb_100x75.jpg
> 4   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\08_groesste-ankauf-mit-sofortigem-bargeld-30099513000_groesste-ankauf-mit-sofortigem-bargeld-300995130__thumb_100x75.jpg
> 5   
> C:\Users\user\Documents\001ML\willat\Games_Konsolen\09_wir-zahlen-sofort-bargeld-30099285800_wir-zahlen-sofort-bargeld-300992858__thumb_100x75.jpg

И я использую эту строку для создания столбца, который будет содержать изображение таблетки: adInfoListPD['image'] = adInfoListPD.Ad_thumb.map(lambda f: get_thumbnail(f)).

Я получаю ошибку:

FileNotFoundError: [Errno 2] No such file or directory:
'C:\\Users\\user\\Documents\\001ML\\willat\\Games_Konsolen\\03_ps4-pro-500-million-limited-edition-blau-transparent-bundle-29598325900_ps4-pro-500-million-limited-edition-blau-transparent-bundle-295983259__thumb_100x75.jpg'

Я дважды проверил пути, и они в порядке. Я также прочитал все другие посты о проблемах пути Python в Windows. Я думаю, что я прохожу путь надлежащим образом. Как я уже сказал, на демо-данных все работает нормально, но не работает с моими данными.

1 Ответ

0 голосов
/ 16 марта 2019

Путь был проблемой в конце концов.

Я использовал:

os.path.join(dir_base,category_folder,dir_name,file_name_thumb) 

для создания правильного пути, который будет работать на всех платформах.

Я уже использовал это, но я не знал, os.path.join также работает с именами файлов. Поэтому я добавлял его вручную и поэтому пропустил "\\" в пути между dir_name и file_name_thumb.

И я также добавил "\\\\?\\" к пути в функции Pil:

   def get_thumbnail(path):
    path = "\\\\?\\"+path 
    i = Image.open(path)    
    return i

Исправить проблемы с путями длиннее 255 в Windows. В то же время это не должно мешать интерпретации пути на машинах Linux. Но я не уверен в этом ...

...