Как получить полный путь к текущему файловому каталогу в Python?

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

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

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

'C:\\python27\\'
+651
07 авг. '10 в 12:17
источник поделиться
13 ответов

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

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

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

import os
os.getcwd()

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

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

+1360
07 авг. '10 в 12:24
источник

Использование Path является рекомендуемым способом начиная с Python 3:

from pathlib import Path
print("File      Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute())  

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

+71
30 апр. '18 в 10:51
источник

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

from pathlib import Path

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

Объяснение:

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

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

+21
26 февр. '19 в 18:36
источник
import os
print os.path.dirname(__file__)
+10
07 авг. '10 в 12:24
источник

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

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

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

+6
16 окт. '14 в 13:05
источник

IPython имеет магическую команду %pwd чтобы получить текущий рабочий каталог. Его можно использовать следующим образом:

from IPython.terminal.embed import InteractiveShellEmbed

ip_shell = InteractiveShellEmbed()

present_working_directory = ip_shell.magic("%pwd")

На IPython Jupyter Notebook %pwd можно использовать непосредственно следующим образом:

present_working_directory = %pwd
+1
07 мар. '18 в 5:50
источник

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

 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\Machine Learning\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlib and seaborn Part2

Путь к файлу: D:\Study\Machine Learning\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlib and seaborn Part2\data\fuel_econ.csv

isfileExist: True

isadirectory: False

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

+1
10 мар. '19 в 4:06
источник

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

import os
dir_path = os.path.dirname(os.path.realpath(__file__))
+1
23 мая '19 в 9:51
источник

Чтобы сохранить согласованность миграции между платформами (macOS/Windows/Linux), попробуйте:

path = r'%s' % os.getcwd().replace('\\','/')
0
12 апр. '18 в 5:16
источник

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

import os 
   def getLocalFolder():
        path=str(os.path.dirname(os.path.abspath(__file__))).split('\\')
        return path[len(path)-1]
0
27 дек. '18 в 10:35
источник

Система: MacOS

Версия: Python 3.6 с Анакондой

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

0
30 янв. '19 в 1:42
источник

Начиная с Python 3.5, вы можете делать следующее для небольших файлов (например, текстовые файлы, маленькие jpegs):

from pathlib import Path

source = Path('../path/to/my/file.txt')
destination = Path('../path/where/i/want/to/store/it.txt')
destination.write_bytes(source.read_bytes())

write_bytes перезапишет все, что было в месте назначения

0
25 апр. '19 в 14:07
источник
## 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
-1
02 янв. '19 в 13:13
источник

Посмотрите другие вопросы по меткам или Задайте вопрос