I have following code:
directory = r'D:\images'
for file in os.listdir(directory):
print(os.path.abspath(file))
and I want next output:
But I get different result:
where D:\code is my current working directory and this result is the same as
os.path.normpath(os.path.join(os.getcwd(), file))
So, the question is: What is the purpose of os.path.abspath while I must use
os.path.normpath(os.path.join(directory, file))
to get REAL absolute path of my file? Show real use-cases if possible.
The problem is with your understanding of os.listdir()
not os.path.abspath()
. os.listdir()
returns the names of each of the files in the directory. This will give you:
img1.jpg
img2.jpg
...
When you pass these to os.path.abspath()
, they are seen as relative paths. This means it is relative to the directory from where you are executing your code. This is why you get "D:\code\img1.jpg".
Instead, what you want to do is join the file names with the directory path you are listing.
os.path.abspath(os.path.join(directory, file))