os.path.abspath('file1.txt') doesn't return the correct path

15,795

Solution 1

os.path.abspath(filename) returns an absolute path as seen from your current working directory. It does no checking whether the file actually exists.

If you want the absolute path of /home/bentley4/Desktop/sc/file1.txt and you are in /home/bentley4 you will have to use os.path.abspath("Desktop/sc/file1.txt").

Solution 2

abspath just builds a path, it doesn't check anything about files existing.

From the docs:

On most platforms, this is equivalent to normpath(join(os.getcwd(), path)).

Share:
15,795
Bentley4
Author by

Bentley4

Profile with mostly old questions where I learned about programming. Thank you SO!

Updated on July 30, 2022

Comments

  • Bentley4
    Bentley4 over 1 year

    Say the path of the file 'file1.txt' is /home/bentley4/Desktop/sc/file1.txt Say my current working directory is /home/bentley4

    import os
    os.path.abspath('file1.txt')
    

    returns /home/bentley4/file1.txt

    os.path.exists('file1.txt')
    

    returns False. If I do

    os.path.abspath('file_that_does_not_exist.txt')
    

    It returns /home/bentley4/file_that_does_not_exist.txt But again, this is not correct. The file does not even exist on my computer. Is there a way to get the correct absolute path from any directory I am currently working in? (aside from defining a new function)

    So this only works when I am in the same directory as the existing file or in the directory one directory or more further from the path of the directory of that file?