Как получить абсолютный путь к файлу в Python

учитывая путь, такой как "mydir/myfile.txt" Как узнать абсолютный путь относительно текущего рабочего каталога в Python? Е. Г. на Windows, я могу закончить:

"C:/example/cwd/mydir/myfile.txt"

9 ответов


>>> import os
>>> os.path.abspath("mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'

также работает, если это уже абсолютный путь:

>>> import os
>>> os.path.abspath("C:/example/cwd/mydir/myfile.txt")
'C:/example/cwd/mydir/myfile.txt'

>>> import os
>>> os.path.abspath('mydir/myfile.txt')
'C:\example\cwd\mydir\myfile.txt'
>>> 

вы можете использовать новую библиотеку Python 3.4 pathlib. (Вы также можете получить его для Python 2.6 или 2.7, используя pip install pathlib.) Авторы писал: "цель этой библиотеки-обеспечить простую иерархию классов для обработки путей файловой системы и общие операции пользователей над ними."

чтобы получить абсолютный путь в Windows:

>>> from pathlib import Path
>>> p = Path("pythonw.exe").resolve()
>>> p
WindowsPath('C:/Python27/pythonw.exe')
>>> str(p)
'C:\Python27\pythonw.exe'

или в UNIX:

>>> from pathlib import Path
>>> p = Path("python3.4").resolve()
>>> p
PosixPath('/opt/python3/bin/python3.4')
>>> str(p)
'/opt/python3/bin/python3.4'

документы здесь: https://docs.python.org/3/library/pathlib.html


еще лучше, установить path.py модуль, он обволакивает все os.path функции и другие связанные функции в методы объекта, которые могут использоваться везде, где используются строки:

>>> from path import path
>>> path('mydir/myfile.txt').abspath()
'C:\example\cwd\mydir\myfile.txt'
>>>

сегодня вы также можете использовать unipath пакет, который был основан на 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
>>>

Я бы рекомендовал использовать этот пакет, как это предлагает чистый интерфейс к общей ОС.путь утилиты.


Я предпочитаю использовать glob

вот как перечислить все типы файлов в текущей папке:

import glob
for x in glob.glob():
    print(x)

вот как перечислить все (например).txt файлы в текущей папке:

import glob
for x in glob.glob('*.txt'):
    print(x)

вот как перечислить все типы файлов в выбранном каталоге:

import glob
for x in glob.glob('C:/example/hi/hello/'):
    print(x)

надеюсь, что это помогло вам


Если вы находитесь на Mac

import os
upload_folder = os.path.abspath("static/img/users")

это даст вам полный путь:

print(upload_folder)

покажет следующий путь:

>>>/Users/myUsername/PycharmProjects/OBS/static/img/user

в случае, если кто-то использует python и linux и ищет полный путь к файлу:

>>> 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)