Как получить полный путь к каталогу текущего файла в Python? - PullRequest
608 голосов
/ 07 августа 2010

Я хочу получить путь к каталогу текущего файла.
Я попробовал:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'

Но как я могу получить путь к каталогу? Например:

'C:\\python27\\'

Ответы [ 12 ]

1269 голосов
/ 07 августа 2010

Если вы имеете в виду каталог запускаемого скрипта:

import os
os.path.dirname(os.path.abspath(__file__))

Если вы имеете в виду текущий рабочий каталог:

import os
os.getcwd()

Обратите внимание, что до и после file - это два подчеркивания, а не одно.

Также обратите внимание, что если вы работаете в интерактивном режиме или загрузили код из чего-то другого, чем файл (например, из базы данных или онлайн-ресурса), __file__ может не устанавливаться, так как отсутствует понятие «текущий файл». Ответ выше предполагает наиболее распространенный сценарий запуска скрипта Python, который находится в файле.

45 голосов
/ 30 апреля 2018

В Python 3:

from pathlib import Path

mypath = Path().absolute()
print(mypath)

Документация pathlib

10 голосов
/ 07 августа 2010
import os
print os.path.dirname(__file__)
6 голосов
/ 16 октября 2014

Вы можете легко использовать библиотеки os и os.path следующим образом

import os
os.chdir(os.path.dirname(os.getcwd()))

os.path.dirname возвращает верхний каталог из текущего.Это позволяет нам перейти на верхний уровень без передачи аргумента файла и без знания абсолютного пути.

5 голосов
/ 26 февраля 2019

В Python 3.x я делаю:

from pathlib import Path

path = Path(__file__).parent.absolute()

Пояснение:

  • Path(__file__) - путь к текущему файлу.
  • .parent дает вам каталог , в котором находится файл.
  • .absolute() дает вам полный абсолютный путь к нему.

Использование pathlib - это современный способ работы с путями. Если вам по каким-то причинам она понадобится позже, просто наберите str(path).

1 голос
/ 23 мая 2019

Попробуйте это:

import os
dir_path = os.path.dirname(os.path.realpath(__file__))
0 голосов
/ 10 марта 2019

ПОЛЕЗНЫЕ СВОЙСТВА ПУТИ В ПИТОНЕ:

 from pathlib import Path

    #Returns the path of the directory, where your script file is placed
    mypath = Path().absolute()
    print('Absolute path : {}'.format(mypath))

    #if you want to go to any other file inside the subdirectories of the directory path got from above method
    filePath = mypath/'data'/'fuel_econ.csv'
    print('File path : {}'.format(filePath))

    #To check if file present in that directory or Not
    isfileExist = filePath.exists()
    print('isfileExist : {}'.format(isfileExist))

    #To check if the path is a directory or a File
    isadirectory = filePath.is_dir()
    print('isadirectory : {}'.format(isadirectory))

    #To get the extension of the file
    fileExtension = mypath/'data'/'fuel_econ.csv'
    print('File extension : {}'.format(filePath.suffix))

ВЫХОД: АБСОЛЮТНЫЙ ПУТЬ - ЭТО ПУТЬ, ГДЕ РАЗМЕЩЕН ВАШ ФАЙЛ ПИФОНА

Абсолютный путь: D: \ Study\ Машинное обучение \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib and seaborn Part2

Путь к файлу: D: \ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib и seaborn * data_conv_security_partner_2_web_v_v_v_conf_part_21010 *

isfileExist: True

isadirectory: False

Расширение файла: .csv

0 голосов
/ 30 января 2019

Система: MacOS

Версия: Python 3.6 с Anaconda

import os rootpath = os.getcwd() os.chdir(rootpath)

0 голосов
/ 02 января 2019
## IMPORT MODULES
import os

## CALCULATE FILEPATH VARIABLE
filepath = os.path.abspath('') ## ~ os.getcwd()
## TEST TO MAKE SURE os.getcwd() is EQUIVALENT ALWAYS..
## ..OR DIFFERENT IN SOME CIRCUMSTANCES
0 голосов
/ 27 декабря 2018

Я сделал функцию для использования при запуске python под IIS в CGI для получения текущей папки:

import os 
   def getLocalFolder():
        path=str(os.path.dirname(os.path.abspath(__file__))).split('\\')
        return path[len(path)-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...