Given a path such as \"mydir/myfile.txt\"
, how do I find the file\'s absolute path relative to the current working directory in Python? E.g. on Windows, I might end up with:
\"C:/example/cwd/mydir/myfile.txt\"
Given a path such as \"mydir/myfile.txt\"
, how do I find the file\'s absolute path relative to the current working directory in Python? E.g. on Windows, I might end up with:
\"C:/example/cwd/mydir/myfile.txt\"
>>> import os
>>> os.path.abspath(\"mydir/myfile.txt\")
\'C:/example/cwd/mydir/myfile.txt\'
Also works if it is already an absolute path:
>>> import os
>>> os.path.abspath(\"C:/example/cwd/mydir/myfile.txt\")
\'C:/example/cwd/mydir/myfile.txt\'
You could use the new Python 3.4 library pathlib
. (You can also get it for Python 2.6 or 2.7 using pip install pathlib
.) The authors wrote: \"The aim of this library is to provide a simple hierarchy of classes to handle filesystem paths and the common operations users do over them.\"
To get an absolute path in Windows:
>>> from pathlib import Path
>>> p = Path(\"pythonw.exe\").resolve()
>>> p
WindowsPath(\'C:/Python27/pythonw.exe\')
>>> str(p)
\'C:\\\\Python27\\\\pythonw.exe\'
Or on UNIX:
>>> from pathlib import Path
>>> p = Path(\"python3.4\").resolve()
>>> p
PosixPath(\'/opt/python3/bin/python3.4\')
>>> str(p)
\'/opt/python3/bin/python3.4\'
Docs are here: https://docs.python.org/3/library/pathlib.html
>>> import os
>>> os.path.abspath(\'mydir/myfile.txt\')
\'C:\\\\example\\\\cwd\\\\mydir\\\\myfile.txt\'
>>>
Better still, install the path.py
module, it wraps all the os.path
functions and other related functions into methods on an object that can be used wherever strings are used:
>>> from path import path
>>> path(\'mydir/myfile.txt\').abspath()
\'C:\\\\example\\\\cwd\\\\mydir\\\\myfile.txt\'
>>>
Today you can also use the unipath
package which was based on path.py
: http://sluggo.scrapping.cc/python/unipath/
>>> from unipath import Path
>>> absolute_path = Path(\'mydir/myfile.txt\').absolute()
Path(\'C:\\\\example\\\\cwd\\\\mydir\\\\myfile.txt\')
>>> str(absolute_path)
C:\\\\example\\\\cwd\\\\mydir\\\\myfile.txt
>>>
I would recommend using this package as it offers a clean interface to common os.path utilities.
I prefer to use glob
here is how to list all file types in your current folder:
import glob
for x in glob.glob():
print(x)
here is how to list all (for example) .txt files in your current folder:
import glob
for x in glob.glob(\'*.txt\'):
print(x)
here is how to list all file types in a chose directory:
import glob
for x in glob.glob(\'C:/example/hi/hello/\'):
print(x)
hope this helped you
Update for Python 3.4+ pathlib
that actually answers the question:
from pathlib import Path
relative = Path(\"mydir/myfile.txt\")
absolute = relative.absolute() # absolute is a Path object
If you only need a temporary string, keep in mind that you can use Path
objects with all the relevant functions in os.path
, including of course abspath
:
from os.path import abspath
absolute = abspath(relative) # absolute is a str object
if you are on a mac
import os
upload_folder = os.path.abspath(\"static/img/users\")
this will give you a full path:
print(upload_folder)
will show the following path:
>>>/Users/myUsername/PycharmProjects/OBS/static/img/user
In case someone is using python and linux and looking for full path to file:
>>> path=os.popen(\"readlink -f file\").read()
>>> print path
abs/path/to/file
filePath = os.path.abspath(directoryName)
filePathWithSlash = filePath + \"\\\\\"
filenameWithPath = os.path.join(filePathWithSlash, filename)