У меня есть изображение с именем image1.png
, его реальный путь на моем macbook:
/ Users / emadboctor / Desktop / images / image1.png
и изображение найдено по телефону:
images = os.listdir('/Users/emadboctor/Desktop/images/image1.png')
Допустим, я хочу получить тот же путь выше, позвонив
os.path.abspath(images[0])
или
pathlib.Path(images[0]).absolute()
и текущий рабочий каталог:
/Users/emadboctor/Desktop/another
Ожидаемый путь: /Users/emadboctor/Desktop/images/image1.png
Что я на самом деле получаю: /Users/emadboctor/Desktop/another/image1.png
Чтобы воспроизвести проблему, вот последовательность шагов:
>>> import os
>>> os.getcwd()
'/Users/emadboctor/Desktop/another'
>>> os.path.abspath('../images/image1.png')
'/Users/emadboctor/Desktop/images/image1.png' # This is the correct/expected path
>>> os.listdir('../images')
['image1.png']
>>> images = [os.path.abspath(image) for image in os.listdir('../images')]
>>> images
['/Users/emadboctor/Desktop/another/image1.png'] # This is the unexpected/incorrect path
>>> import pathlib
>>> pathlib.Path('../images/image1.png').parent.absolute()
PosixPath('/Users/emadboctor/Desktop/another/../images') # This is also the unexpected/incorrect path
Как получить ожидаемый путь без жесткого кодирования правильного префикса?
[f'/Users/emadboctor/Desktop/images/{image}' for image os.listdir('../images')]