Python-сообщество
- Начало
- » Python для новичков
- » Как получить текущую директорию ?
#1 Март 4, 2009 17:50:33
Romann От: Зарегистрирован: 2009-03-04 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail
Как получить текущую директорию ?
Привет всем!
Как получить текущую директорию ?
не бейте меня сильно, но я не нашел поиском ответ
#2 Март 4, 2009 17:54:50
Lexander От: Зарегистрирован: 2008-09-19 Сообщения: 1139 Репутация: 33 Профиль Отправить e-mail
Как получить текущую директорию ?
Romann
но я не нашел поиском ответ
#3 Март 4, 2009 17:55:06
ZAN От: Зарегистрирован: 2007-06-10 Сообщения: 403 Репутация: 10 Профиль Отправить e-mail
Как получить текущую директорию ?
>>> import os
>>> os.curdir
'.'
>>> os.path.abspath(os.curdir)
'/home/alex/Projects'
#4 Март 4, 2009 18:15:49
Romann От: Зарегистрирован: 2009-03-04 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail
Как получить текущую директорию ?
Спасибо всем за быстрый ответ.
ту Lexander я не совсем в ладах с инглишем и мой запрос выглядел немного по иному. наверное потому и не нашел.
#5 Март 4, 2009 18:17:04
asv13 От: Зарегистрирован: 2007-01-22 Сообщения: 130 Репутация: 0 Профиль Отправить e-mail
Как получить текущую директорию ?
про curdir я не знал
>>> import os
>>> os.getcwd()
'C:\\Python25'
>>> os.path.abspath(os.curdir)
'C:\\Python25'
#6 Март 4, 2009 21:43:12
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как получить текущую директорию ?
Стас
Ты за 5 минут написал 3 ответа и все или неправильно или не в тему. Ты б, может, больше читал и поменьше писал? Пока что…
#7 Март 4, 2009 22:02:34
Ferroman От: Зарегистрирован: 2006-11-16 Сообщения: 2759 Репутация: 1 Профиль Отправить e-mail
Как получить текущую директорию ?
1. А во-вторых человек спрашивает «Как получить текущую директорию»
2. Во-первых ответ уже написали, дублировать смысла нет.
#8 Март 5, 2009 11:44:29
igor.kaist От: Зарегистрирован: 2007-11-12 Сообщения: 1879 Репутация: 3 Профиль Отправить e-mail
Как получить текущую директорию ?
Ferroman
, Стасу порекомендовали не писать в “профи”, вот он и переключился на этот раздел. Думаю, следующим шагом будет “флейм”
#9 Март 12, 2009 00:42:53
regall От: Киев Зарегистрирован: 2008-07-17 Сообщения: 1583 Репутация: 3 Профиль Отправить e-mail
Как получить текущую директорию ?
os.path.abspath(os.curdir)
возвратит директорию, в которой находится стартовый скрипт. Чтобы получить директорию, в которой находится текущий модуль, необходимо проделать следующее
import os
basepath = os.path.abspath(os.path.dirname(sys.modules[----модуль----.__module__].__file__))
filepath = os.path.join(basepath, 'question.pt')
ptf = open(filepath,'r')
в таком случае — через получение пути к модулю на диске (определить текущую папку)
#10 Март 12, 2009 01:38:02
Андрей Светлов От: Зарегистрирован: 2007-05-15 Сообщения: 3137 Репутация: 14 Профиль Адрес электронной почты
Как получить текущую директорию ?
Все даже веселее.
os.curdir == os.path.curdir == ‘.’
Т.е. просто строка. В отличие от os.getcwd()
os.path.abspath(…) Умеет по ней построить нечто более вразумительное. Но такой подход выглядит как-то нехорошо
Определение текущей и файловой директории в Python
Работа с файлами и директориями — это неотъемлемая часть программирования. Особенно часто встает вопрос о том, как узнать, в какой директории находится исполняемый файл, а также как определить текущую директорию программы.
В Python для этого предусмотрены специальные функции в модуле os .
Текущая директория
Текущей директорией называется та, в которой был запущен скрипт. Для определения текущей директории используется функция os.getcwd() .
import os print(os.getcwd())
При выполнении этого кода на экран будет выведен полный путь к директории, из которой был запущен скрипт.
Директория исполняемого файла
В некоторых случаях бывает важно знать, где именно находится исполняемый файл — это может быть полезно, например, при работе с относительными путями.
Для определения директории исполняемого файла используется функция os.path.dirname() и специальная переменная __file__ , которая содержит путь к текущему исполняемому файлу.
import os print(os.path.dirname(os.path.abspath(__file__)))
Такой код выведет полный путь к директории, в которой находится исполняемый файл, даже если он был запущен из другой директории.
Таким образом, в Python предусмотрены удобные средства для работы с директориями, которые позволяют легко определить местоположение исполняемого файла и текущую директорию.
Текущая директория в Python
Как в Python — программе узнать путь до текущей директории со скриптом. Я знаю, что для этого требуется библиотека os, но там столько различных классов и функций, что можно пол дня убить на поиски.
Отслеживать
52.2k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков
задан 15 июн 2016 в 12:24
7,708 17 17 золотых знаков 70 70 серебряных знаков 132 132 бронзовых знака
связанный вопрос: Find current directory and file’s directory
26 ноя 2016 в 22:54
ассоциация: stackoverflow.com/questions/5137497/…
2 мар 2017 в 12:37
pwd — отображает текущую рабочую директорию
23 фев 2018 в 8:08
5 ответов 5
Сортировка: Сброс на вариант по умолчанию
Если вы запускаете скрипт C:\Scripts\script.py из D:\work папки:
D:\work> py C:\Scripts\script.py
- D:\work — это текущая рабочая директория на момент старта скрипта. open(‘file.txt’) будет пытаться открыть D:\work\file.txt файл
- C:\Scripts — это директория со скриптом.
Текущая рабочая директория
Текущая рабочая директория возвращается os.getcwd() функцией, где CWD это Current Working Directory («текущая рабочая директория»). os.getcwdb() возвращает путь в виде байт. Происхождение функции от POSIX getcwd(3) . Другие способы могут вернуть разные результаты в зависимости от настроек доступа промежуточных директорий, общей длины (от платформы зависит) итд—не изобретайте своих способов, если не осознаёте всех последствий возможного изменения в поведении функции. Также нетрадиционные способы получения рабочей директории могут ухудшить читаемость другими Питон-программистами. Из The Zen of Python :
There should be one— and preferably only one —obvious way to do it.
По умолчанию относительные пути используют именно эту директорию, поэтому явно вызывать os.getcwd() редко нужно. Например, open(‘file.txt’) вызов открывает файл ‘file.txt’ в текущей директории. Если необходимо передать полный путь в виде строки, то можно использовать os.path.abspath(‘file.txt’) — getcwd() снова явно не используется.
Path.cwd() из pathlib модуля возвращает путь к текущей директории как объект c разными полезными и удобными методами такими как .glob(‘**/*.py’) .
Директория со скриптом
Текущая рабочая директория может отличаться от директории с текущим Питон-скриптом. Часто, но не всегда можно os.path.dirname(os.path.abspath(__file__)) использовать, чтобы получить директорию с текущим Питон скриптом, но это не всегда работает. Посмотрите на get_script_dir() функцию, которая поддерживает более общий случай.
Если хочется получить данные из файла, расположенного относительно установленного Питон-модуля, то используйте pkgutil.get_data() или setuptools’ pkg_resources.resource_string() вместо построения путей c помощью __file__ . Это работает даже, если ваш пакет упакован в архив. В Python 3.7 появился importlib.resources модуль. К примеру, если у вас есть Питон пакет data внутри которого лежит файл.txt , то чтобы достать текст:
import importlib.resources text = importlib.resources.read_text('data', 'файл.txt')
Если вы хотите найти место куда пользовательские данные можно положить, то appdirs модуль предоставляет переносимый способ:
import appdirs # $ pip install appdirs user_data_dir = appdirs.user_data_dir("Название приложения", "Кто создал")
Разные платформы (Windows, MacOS, Linux) используют разные соглашения, appdirs позволяет не плодить сущностей и использовать на каждой платформе подходящие директории.
Зачем нужна команда pwd и что такое текущая рабочая директория

Из этой статьи вы узнаете, как определить текущую рабочую директорию (current working directory) с помощью команды pwd.
- Что такое текущая рабочая директория
- Команда pwd
- Как найти текущую рабочую директорию
- Заключение
Что такое текущая рабочая директория
Текущая рабочая директория — директория, в которой пользователь работает в данный момент. При взаимодействии с командной строкой вы всегда находитесь внутри директории.
По умолчанию, когда вы запускаете операционную систему Linux, текущим рабочим каталогом является домашняя директория. Изменить рабочую директорию можно с помощью команды cd.
Например, чтобы изменить текущую рабочую директорию на /tmp, используйте такую команду:
cd /tmp
Путь к текущей рабочей директории может отображаться в оболочке командной строки.
Команда pwd выводит текущую рабочую директорию. Это одна из базовых и самых популярных команд в Linux. При вызове pwd выводится полный путь к текущей рабочей директории.
Команда pwd встроена в большинство современных командных оболочек, в том числе в Bash. Её поведение отличается от выполнения /bin/pwd. С помощью команды type можно получить все места, где есть pwd:
type -a pwd
pwd is a shell builtin pwd is /bin/pwd
Как показывает вывод, встроенная команда pwd имеет более высокий приоритет по сравнению с /bin/pwd. Поэтому она используется всякий раз, когда вы вводите в командую строку pwd. Если вы хотите использовать файл /bin/pwd, нужно указать в командной строке полный путь до него.
Как найти текущую рабочую директорию
Чтобы понять, в какой директории вы работаете в данный момент, введите в терминале pwd. Вывод может выглядеть так (название директории может отличаться):
Всё, что делает команда pwd — выводит значение переменной окружения PWD. Такой же вывод получится, если ввести в терминале:
echo $PWD

Команда pwd принимает только два аргумента:
- -L (—logical) — не разрешать симлинки.
- -P (—physical) — отображать физическую директорию без симлинков.
По умолчанию pwd ведёт себя так, как будто применена опция -L.
Чтобы понять, как работает аргумент -P, создадим директорию и симлинк, указывающий на эту директорию.
mkdir /tmp/directory ln -s /tmp/directory /tmp/symlink
Когда вы зайдёте в директорию /tmp/symlink и введёте команду pwd, вывод будет таким:
То есть текущей рабочей директорией становится /tmp/symlink. Если ввести команду pwd -P, вывод будет таким:
Симлинк (англ. Symlink, symbolic link) — символическая ссылка. Этим термином обозначают файл, в котором содержится абсолютный или относительный путь к другому файлу или директории.
То есть получаем директорию, на которую указывает симлинк.
Заключение
Текущая рабочая директория — директория, из которой вы вызываете команды в терминале. Чтобы отобразить текущую рабочую директорию, нужно использовать команду pwd. Если у вас остались вопросы, добро пожаловать в комментарии.
Адаптированный перевод статьи Pwd Command in Linux (Current Working Directory) by Linuxize.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки
